我正在使用蓝牙将一个16字节的字节数组发送到Python服务器。基本上我想要实现的是按原样读取字节数组。我怎么能用Python做到这一点。
我现在正在做的是读取字符串,因为这是我知道如何从套接字读取数据的唯一方法。这是我在python中的socket中的代码
data = client_sock.recv(1024)
data
是字符串。有什么想法吗?
答案 0 :(得分:4)
你已经完全按照你的要求做了。
data
是从套接字收到的字节,按原样。
在Python 3.x中,它是一个bytes
对象,它只是bytearray
的不可变版本。在Python 2.x中,它是str
对象,因为str
和bytes
是相同的类型。但不管怎样,这种类型只是一串字节。
如果要将这些字节作为数字而不是字符来访问:在Python 3.x中,只需索引或迭代bytes
即可,但在Python 2.x中,您必须调用{{1每个角色。这很容易。
或者,在这两个版本中,您只需调用ord
,它会生成数据的可变data = bytearray(data)
副本,当您对其进行索引或迭代时,它会为您提供数字而不是字符。
因此,举例来说,假设我们想在Python 2.7中将每个字节的十进制值写在一个单独的行上(这是一件很蠢的事情,但它演示了这些想法):
bytearray
答案 1 :(得分:0)
你想要的是struct
模块。特别是struct.unpack()