Конвертировать 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 с правильным значением.