Как преобразовать int в шестнадцатеричную строку?
Я хочу взять целое число (который будет
например: я хочу пройти в 65 и выйти 'x41' или 255 и вам 'xff'.
Я пробовал делать это с помощью тега struct.pack('c',65), но это дроссели на что-нибудь выше 9 так как он хочет взять в одну строку символов.
11 ответов:
это преобразует целое число в 2-значную шестнадцатеричную строку с префиксом 0x:
strHex = "0x%0.2X" % 255
А как же
hex()?hex(255) # 0xffесли вы действительно хотите иметь
\впереди вы можете сделать:print '\' + hex(255)[1:]
попробуй:
"0x%x" % 255 # => 0xffили
"0x%X" % 255 # => 0xFFдокументация Python говорит: "Держите это под подушкой:http://docs.python.org/library/index.html"
позвольте мне добавить это, потому что иногда вы просто хотите однозначное представление:
'{:x}'.format(15) > fа теперь с новым
f''формат строки вы можете сделать:f'{15:x}' > fПримечание: начальная 'f' в
f'{15:x}'- это для обозначения формата строки
Если вы хотите упаковать структуру со значением формат B вместо c. C преобразует символ в строку (что само по себе не слишком полезно), А B преобразует целое число.
struct.pack('B', 65)(и да, 65-это \x41, а не \x65.)
класс struct также будет удобно обрабатывать endianness для связи или других целей.
обратите внимание, что для больших значений
hex()все еще работает (некоторые другие ответы не делают):x = hex(349593196107334030177678842158399357) print(x)Python 2:
0x4354467b746f6f5f736d616c6c3f7dL
Python 3:0x4354467b746f6f5f736d616c6c3f7dдля расшифрованного сообщения RSA можно сделать следующее:
import binascii hexadecimals = hex(349593196107334030177678842158399357) print(binascii.unhexlify(hexadecimals[2:-1])) # python 2 print(binascii.unhexlify(hexadecimals[2:])) # python 3
Я хотел, чтобы случайное целое число было преобразовано в шестизначную шестнадцатеричную строку с # в начале. Чтобы получить это я использовал
"#%6x" % random.randint(0xFFFFFF)
это сработало лучше всего для меня
"0x%02X" % 5 # => 0x05 "0x%02X" % 17 # => 0x11измените (2), Если вы хотите число с большей шириной (2 для 2 шестигранных печатных символов), поэтому 3 даст вам следующее
"0x%03X" % 5 # => 0x005 "0x%03X" % 17 # => 0x011
С
format()на , мы можем сделать:>>> # format also supports binary numbers >>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42) 'int: 42; hex: 2a; oct: 52; bin: 101010' >>> # with 0x, 0o, or 0b as prefix: >>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) 'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'
Comments