如何从Python中的套接字读取字节数组

时间:2013-12-09 21:30:58

标签: python string sockets byte

我正在使用蓝牙将一个16字节的字节数组发送到Python服务器。基本上我想要实现的是按原样读取字节数组。我怎么能用Python做到这一点。

我现在正在做的是读取字符串,因为这是我知道如何从套接字读取数据的唯一方法。这是我在python中的socket中的代码

data = client_sock.recv(1024)

data是字符串。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

你已经完全按照你的要求做了。

data是从套接字收到的字节,按原样。

在Python 3.x中,它是一个bytes对象,它只是bytearray的不可变版本。在Python 2.x中,它是str对象,因为strbytes是相同的类型。但不管怎样,这种类型只是一串字节。

如果要将这些字节作为数字而不是字符来访问:在Python 3.x中,只需索引或迭代bytes即可,但在Python 2.x中,您必须调用{{1每个角色。这很容易。

或者,在这两个版本中,您只需调用ord,它会生成数据的可变data = bytearray(data)副本,当您对其进行索引或迭代时,它会为您提供数字而不是字符。

因此,举例来说,假设我们想在Python 2.7中将每个字节的十进制值写在一个单独的行上(这是一件很蠢的事情,但它演示了这些想法):

bytearray

答案 1 :(得分:0)

你想要的是struct模块。特别是struct.unpack()