1

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

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

如果我打印 convdata,我会得到我想查看的字符串,类似于:“00 00 00 00 00 08 03 01 01 00 00”

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

谢谢您的帮助!

4

3 回答 3

1

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

假设语言是 Python ;)

于 2013-10-15T18:59:23.623 回答
0

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

于 2013-10-15T19:16:42.493 回答
0

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

l = list(data)

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

l = [ord(x) for x in data]
于 2013-10-15T19:07:46.363 回答