Я хочу преобразовать десятичное целое число в шестнадцатеричную строку \xLO\xHI
, сохранив префикс "\ x" и не переводя печатный ASCII в их эквивалентный ASCII.
Чего я хочу достичь:
>>> dec_to_hex(512)
"\x00\x02"
Следующие решения, которые я нашел при поиске ответа, недостаточно хороши, и я объясню, почему:
В этом случае префикс "\x" не ставится и не преобразуется в байты
>>> hex(512)
'0x200'
Этот пример очень похож, но получает шестнадцатеричный (мне нужен десятичный) и переводит символы в ascii:
>>> from binascii import unhexlify
>>> unhexlify('65004100430005FF70000000')
'e\x00A\x00C\x00\x05\xffp\x00\x00\x00'
Это переводит ASCII в символы:
>>> import struct
>>> struct.pack('<h', 512)
'\x00\x02'
>>> struct.pack('<h', 97)
'a\x00'
struct
переводит ascii в символы (97 в «a», 103 в «g» и т. д.). - person api pota   schedule 23.01.2018print re.sub(r'([0-9A-F]{2})',r'\\x\1','%04X' % 512)
, но не с прямым порядком байтов. - person api pota   schedule 23.01.2018repr(struct.pack('<h', 97)).strip("'")
- person Spezi94   schedule 23.01.2018