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

时间:2011-12-05 07:23:49

标签: python python-3.x bytearray

我有一个表示字节的十六进制字符串列表,格式为“FF”。我想将整个列表转换为字节流,以便我可以通过套接字(Python 3)发送它。看起来像bytearray类型可以工作,但我找不到任何方法直接将列表转换为bytearray。

我可以在循环中手动完成,但是必须有一个更好的Python方法来执行此操作。

3 个答案:

答案 0 :(得分: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""

如果你有很多人,那么看看哪一个是最快的可能是值得的。

答案 1 :(得分:0)

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') - >字节组(B '\ xb9 \ X01 \ XEF')。

答案 2 :(得分:-1)

参考:

char * PyByteArray_AsString(PyObject * bytearray) 在检查空指针

之后,将bytearray的内容作为char数组返回 来自python doc reference