将字节字符串列表转换为字节数组(字节流)
我有一个包含十六进制字符串的列表,这些字符串表示字节,格式像是“FF”。我想把整个列表转换成字节流,这样我就可以通过套接字发送它(使用Python 3)。我觉得bytearray这个类型可能适合,但我找不到直接把列表转换成bytearray的方法。
我可以通过循环手动完成这个转换,但我觉得应该有更好的Python方法来做到这一点。
3 个回答
-1
参考:
char* PyByteArray_AsString(PyObject *bytearray) 这个函数会把 bytearray 的内容转换成字符数组,前提是它会先检查这个指针是否为空。
详细信息可以查看 Python 文档
1
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')。
3
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""
如果你有很多这样的东西,看看哪个是最快的可能会很有价值。