从单个长字符串创建列表

时间:2013-10-15 18:40:58

标签: python list sockets

我正在使用TCP套接字并从设备接收二进制数据包。我还使用了一个名为HexToBinary的模块,用于将二进制流转换为十六进制字符串。像这样:

data = self.csocket.recv(560)
convdata = HexToBinary.ByteToHex(data)

如果我打印了convdata,我会得到我希望看到的字符串,如下所示: “00 00 00 00 00 08 03 01 01 00 00”

我想要做的是创建一个列表,每个字节作为列表的一个元素,然后我可以使用list命令修改数据包并创建一个新数据包。我无法弄清楚如何以编程方式执行此操作。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

l = [int(x, 16) for x in convdata.split()]

假设语言是Python;)

答案 1 :(得分:0)

您不需要中间convdata。如果你想要一个字节列表:

l = list(data)

如果你想要一个整体列表:

l = [ord(x) for x in data]

答案 2 :(得分:0)

实际字节只是b''.join(convdata.split()).decode('hex')。这个结果是一个bytes对象,它在Python 2中只是一个字符串,但在Python 3中不同于unicode字符串。