Как преобразовать int в шестнадцатеричный с прямым порядком байтов с префиксом \x?

Я хочу преобразовать десятичное целое число в шестнадцатеричную строку \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'

person api pota    schedule 23.01.2018    source источник
comment
Пробовали ли вы ответы из этой темы? Что касается прямого порядка байтов, вы можете использовать «I» вместо «I», который будет прямым порядком байтов.   -  person Spezi94    schedule 23.01.2018
comment
struct переводит ascii в символы (97 в «a», 103 в «g» и т. д.).   -  person api pota    schedule 23.01.2018
comment
Другой ответ близок, print re.sub(r'([0-9A-F]{2})',r'\\x\1','%04X' % 512), но не с прямым порядком байтов.   -  person api pota    schedule 23.01.2018
comment
Вы пробовали функцию repr()? См. эту тему, как ее использовать. Пример кода: repr(struct.pack('<h', 97)).strip("'")   -  person Spezi94    schedule 23.01.2018
comment
это также переводится как 97   -  person api pota    schedule 24.01.2018