Я хочу взять целое число (это будет <= 255), в шестнадцатеричное представление строки
например: я хочу пройти 65
и выйти '\x41'
или или 255
получить '\xff'
.
Я пытался сделать это с struct.pack('c',
65 )
, но это подавляет все выше, 9
так как он хочет принять в одну строку символов.
chr
вообще не включает ASCII - он просто берет число и создает однобайтовую строку байтов, где порядковый номер байта - это число. ASCII и ASCII-совместимые кодировки вступают в игру, когда вы пишете и отображаете строки байтов.'A'
другой способ писать и отображать'\x41'
. Всеstr
действительно волнует тот факт, что это шестьдесят пять. Чтобы сделать вещи понятными и полезными для людей, он часто становится А.Это преобразует целое число в шестизначную шестнадцатеричную строку с префиксом 0x:
источник
Как насчет
hex()
?Если вы действительно хотите быть
\
впереди, вы можете сделать:источник
repr(chr(255)) # '\xff'
также добивается этогоПытаться:
или
Документация Python гласит: "держите это под своей подушкой: http://docs.python.org/library/index.html "
источник
Позвольте мне добавить это, потому что иногда вам просто нужно однозначное представление:
И теперь с новыми
f''
строками формата вы можете сделать:источник
Если вы хотите упаковать структуру со значением <255 (один байт без знака, uint8_t) и в итоге получить строку из одного символа, вы, вероятно, ищете формат B вместо c . C преобразует символ в строку (сама по себе она не слишком полезна), а B преобразует целое число.
(И да, 65 - это \ x41, а не \ x65.)
Класс struct также будет удобно обрабатывать порядок байтов для связи или других целей.
источник
Обратите внимание, что для больших значений
hex()
все еще работает (некоторые другие ответы не работают):Python 2:
0x4354467b746f6f5f736d616c6c3f7dL
Python 3:
0x4354467b746f6f5f736d616c6c3f7d
Для дешифрованного сообщения RSA можно сделать следующее:
источник
Это сработало лучше для меня
Измените (2), если вы хотите число с большей шириной (2 для 2 шестнадцатеричных печатных символов), так что 3 даст вам следующее
источник
Я хотел, чтобы случайное целое число было преобразовано в шестизначную шестнадцатеричную строку с # в начале. Чтобы получить это я использовал
источник
"#%6x" % random.randint(0x0, 0xFFFFFF)
. (Существует не хватает ,%
прежде чем6
иrandint
принимает 2 параметра : -Более и верхняя bounds-)С
format()
, в соответствии с форматом-примеров , мы можем сделать:источник
Например:
источник
Также вы можете конвертировать любое число в любой базе в гекс. Используйте этот однострочный код здесь легко и просто:
hex(int(n,x)).replace("0x","")
У вас есть строка,
n
которая является вашим номером иx
основанием этого числа. Сначала измените его на целое, а затем на шестнадцатеричное, но гекс имеет0x
в начале, поэтомуreplace
мы удалим его.источник
В качестве альтернативного представления вы можете использовать
источник