0

我需要编写连接了 100 多个客户端的服务器应用程序,这些客户端是嵌入式机器,每 2 分钟通过 tcp 套接字发送一些十六进制数据。之前我在 C# 中成功地编写了相同的代码,但现在我想使用 twisted 在 python 中编写相同的代码。由于我是 python 新手,我面临着某些问题。在 C# 中,我将来自客户端的数据直接存储在字节数组中,然后处理该字节数组。现在我想在 python 中做同样的事情,但我找不到怎么做?下面的代码只显示了 hex->ascii->char。

def rawDataReceived(self, data):
            print "hello"
            print data

我的问题如何将此数据转换为字节数组或直接将数据捕获为字节?例如,客户端想要发送“w”字母,它将发送服务器 77 作为 1 个字节。我当前的代码显示 w 但我如何将其转换为字节数组,例如 bytes[] array[0] = 0x77。

4

1 回答 1

2

要从 a 创建一个字节数组str,请使用bytearray:*

>>> data = 'hello'
>>> array = bytearray(data)
>>> array[0]
104
>>> hex(array[0])
0x68
>>> array[0] == 0x68
True

或者,您可以使用以下命令将字符一一转换为字节ord

>>> ord(data[0])
104

所以这些是等价的:

>>> list(bytearray(data)) == [ord(c) for c in data]
True

* 请注意,这里的文档有点混乱。他们说字符串需要编码,但这仅在 Python 3.x 中是正确的(这对于为 2.7 版明确编写的文档来说很奇怪)。在 2.x 中,str符合缓冲区接口,因此不需要编码。

于 2013-11-14T12:29:38.747 回答