将十六进制字符串转换为 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])
我尝试了两种方法,但它们以不同的格式显示。
- 使用bytes.fromhex()
>>> bytes.fromhex('a5acf29e4d11f20b6dee54bf369ee0f8')
b'\xa5\xac\xf2\x9eM\x11\xf2\x0bm\xeeT\xbf6\x9e\xe0\xf8'
- 使用 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')
如何转换十六进制字符串= a5acf29e4d11f20b6dee54bf369ee0f8
就是这个=(bytes([0xa5, 0xac, 0xf2, 0x9e, 0x4d, 0x11, 0xf2, 0x0b, 0x6d, 0xee, 0x54, 0xbf, 0x36, 0x9e, 0xe0, 0xf8])
我尝试了两种方法,但它们以不同的格式显示。
- 使用bytes.fromhex()
>>> bytes.fromhex('a5acf29e4d11f20b6dee54bf369ee0f8')
b'\xa5\xac\xf2\x9eM\x11\xf2\x0bm\xeeT\xbf6\x9e\xe0\xf8'
- 使用 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')