Как преобразовать интервал в шестнадцатеричную строку?

Я хочу взять целое число (который будет <= 255), к шестнадцатеричному строковому представлению

например: Я хочу передать в 65 и выйдите '\x41', или 255 и доберитесь '\xff'.

Я попытался делать это с struct.pack('c',65), но это дросселирует на чем-либо выше 9 так как это хочет взять в односимвольной строке.

196
задан BartoszKP 22 July 2015 в 03:54
поделиться

4 ответа

Вы ищете функцию chr.

Похоже, вы смешиваете десятичное представление целых чисел и шестнадцатеричное представление целых чисел, поэтому не совсем понятно, что вам нужно. Основываясь на приведенном вами описании, я думаю, что один из этих фрагментов показывает, что вам нужно.

>>> chr(0x65) == '\x65'
True


>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True

Обратите внимание, что это совсем не то же самое, что строка, содержащая целое число в шестнадцатеричном виде. Если вы хотите именно этого, используйте встроенный модуль hex.

199
ответ дан 23 November 2019 в 05:18
поделиться

Это преобразует целое число в двузначную шестнадцатеричную строку с префиксом 0x:

strHex = "0x%0.2X" % 255
129
ответ дан 23 November 2019 в 05:18
поделиться

Попробуйте:

"0x%x" % 255 # => 0xff

или

"0x%X" % 255 # => 0xFF

В документации Python сказано: "Храните это под подушкой: http://docs.python.org/library/index.html"

42
ответ дан 23 November 2019 в 05:18
поделиться

Что насчет hex()?

hex(255)  # 0xff

Если вы действительно хотите иметь \ впереди, вы можете сделать:

print '\\' + hex(255)[1:]
53
ответ дан 23 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: