我有一个十六进制字符串列表,格式为"FF",代表字节。我想将整个列表转换为字节流,以便通过套接字发送它(使用Python 3)。它看起来bytearray类型会起作用,但我找不到任何直接将列表转换为bytearray的方法。
我可以在循环中手动完成此操作,但认为必须有更好的Python方法来做到这一点。
我有一个十六进制字符串列表,格式为"FF",代表字节。我想将整个列表转换为字节流,以便通过套接字发送它(使用Python 3)。它看起来bytearray类型会起作用,但我找不到任何直接将列表转换为bytearray的方法。
我可以在循环中手动完成此操作,但认为必须有更好的Python方法来做到这一点。
hexstrings = ["DE", "AD", "BE", "EF"] # big-endian 0xDEADBEEF
bytes = bytearray(int(x, 16) for x in hexstrings)
bytes = bytearray.fromhex("".join(hexstrings)) # Python 2.6 may need u""
hexlist = ["a9", "00", "85", "c6"]
ba = bytearray(h.decode("hex") for h in hexlist)
另请参阅bytearray.fromhex:
bytearray.fromhex(string) -> bytearray
从十六进制数字字符串创建一个bytearray对象。两个数字之间的空格是被接受的。例如: bytearray.fromhex('B9 01EF') -> bytearray(b'\xb9\x01\xef')。
0xDEADBEEF
是一个整数,仅在大端机器上与hexstrings
相关。第二个代码注释:你的代码可以在Python 2.7中正常工作,而无需更改;但如果要让它在早期版本上运行,比如Python 2.1到2.7,就需要进行重大手术,例如"".join([chr(int(x, 16)) for x in hexstrings])
将完成这项工作。 - John Machinbytearray
是在2.6中引入的。) - kindall