将十六进制字符串转换为 Python 中的字节列表

Covert Hexademcial String to Byte list in Python

如何转换十六进制字符串= a5acf29e4d11f20b6dee54bf369ee0f8

就是这个=(bytes([0xa5, 0xac, 0xf2, 0x9e, 0x4d, 0x11, 0xf2, 0x0b, 0x6d, 0xee, 0x54, 0xbf, 0x36, 0x9e, 0xe0, 0xf8])

我尝试了两种方法,但它们以不同的格式显示。

  1. 使用bytes.fromhex()
>>> bytes.fromhex('a5acf29e4d11f20b6dee54bf369ee0f8')
b'\xa5\xac\xf2\x9eM\x11\xf2\x0bm\xeeT\xbf6\x9e\xe0\xf8'
  1. 使用 unhexlify
>>> import binascii
>>> from binascii import unhexlify
>>> unhexlify('a5acf29e4d11f20b6dee54bf369ee0f8')
b'\xa5\xac\xf2\x9eM\x11\xf2\x0bm\xeeT\xbf6\x9e\xe0\xf8'

但是,两种格式的类型相同。

>>> type(bytes([0xa5, 0xac, 0xf2, 0x9e, 0x4d, 0x11, 0xf2, 0x0b, 0x6d, 0xee, 0x54, 0xbf, 0x36, 0x9e, 0xe0, 0xf8]))
<class 'bytes'>
>>> type(b'\xa5\xac\xf2\x9eM\x11\xf2\x0bm\xeeT\xbf6\x9e\xe0\xf8')
<class 'bytes'>

无论如何,我只想以字节列表格式显示最终格式

(bytes([0xa5, 0xac, 0xf2, 0x9e, 0x4d, 0x11, 0xf2, 0x0b, 0x6d, 0xee, 0x54, 0xbf, 0x36, 0x9e, 0xe0, 0xf8])

有人可以建议我如何实现吗?

由于您已要求以特定格式显示,因此您可以轻松地以可变数据类型的成本做到这一点

这样的东西可能有用

bytes_from_hex = bytearray.fromhex('a5acf29e4d11f20b6dee54bf369ee0f8')
print("bytes([",", ".join([hex(b) for b in bytes_from_hex]),"])")

for_disp = "bytes(["+", ".join([hex(b) for b in bytes_from_hex])+"])"
print(for_disp)
print(type(for_disp))

如果你想让 byte[] 命中一个 API 那么显示应该无关紧要,像这样的东西应该可以工作

bytearray.fromhex('a5acf29e4d11f20b6dee54bf369ee0f8')