จะแปลง int เป็น hex endian ตัวเล็ก ๆ ด้วยคำนำหน้า \x ได้อย่างไร

ฉันต้องการแปลงจำนวนเต็มทศนิยมให้เป็นสตริง \xLO\xHI hex ในขณะที่คงคำนำหน้า "\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
คุณได้ลองคำตอบจากหัวข้อนี้แล้วหรือยัง สำหรับ endian ตัวเล็กๆ คุณสามารถใช้ '‹I' แทน '›I' ซึ่งจะเป็น big endian   -  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 เป็น a เช่นกัน   -  person api pota    schedule 24.01.2018