Конвертировать hex в строковый литерал: заменить 0x на \x

Мне нужно отправить команду, состоящую из шестнадцатеричных значений, например так: "\x06\x01\x00\x44". Затем строка кодируется в двоичный файл с использованием встроенной функции.encode() и отправляется в Telnet.

По причинам, которые я не понимаю, это не работает, если строка отформатирована с использованием другого шестнадцатеричного форматирования (0x вместо \x): "0x060x010x000x44", поэтому я пытаюсь использовать только \x.

Мне нужно вставить значение в команду перед его преобразованием, но я не знаю, как взять целочисленный ввод и преобразовать его в шестнадцатеричный строковый литерал.

Я могу сделать это:

input_int = 100
hex_value = hex(input_int)

Но это просто оставляет меня с hex_value = '0x64', который не совпадает с '\x64'.

Есть какой-то ярлык, который я пропускаю, или какой-то способ просто превратить int прямо в шестнадцатеричную строку?

(Я использую Python 2.7, кстати.)

1 ответ

Оказывается, chr() - это то, что я искал. Превращает целочисленное значение в символ ASCII с правильным значением.

Другие вопросы по тегам