将字节字符串列表转换为字节数组(字节流)

3 投票
3 回答
15660 浏览
提问于 2025-04-17 07:42

我有一个包含十六进制字符串的列表,这些字符串表示字节,格式像是“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""

如果你有很多这样的东西,看看哪个是最快的可能会很有价值。

撰写回答