[英]How can I read a byte array from a socket in Python
我正在使用蓝牙将16字节的字节数组发送到Python服务器。 基本上我想实现的是按原样读取字节数组。 我该如何在Python中做到这一点。
我现在正在做的是读取字符串,因为这是我知道如何从套接字读取数据的唯一方法。 这是我在python套接字中的代码
data = client_sock.recv(1024)
其中data
是字符串。 有任何想法吗?
您已经完全按照自己的要求进行了。
data
是按原样从套接字接收的字节。
在Python 3.x中,它是一个bytes
对象,它只是bytearray
的不变版本。 在Python 2.x中,它是一个str
对象,因为str
和bytes
是同一类型。 但是无论哪种方式,该类型都只是一个字节字符串。
如果要以数字而不是字符的形式访问这些字节:在Python 3.x中,只需对bytes
索引或迭代即可,但是在Python 2.x中,必须在每个字符上调用ord
。 这很容易。
或者,在这两个版本中,您都可以只调用data = bytearray(data)
,这将为数据创建一个可变的bytearray
副本,当您对其进行索引或迭代时,它会为您提供数字而不是字符。
因此,举例来说,假设我们要在Python 2.7中将一行中每个字节的十进制值写到文本文件中(这是一件很愚蠢的事,但它演示了这个想法):
data = client_sock.recv(1024)
with open('textfile.txt', 'a') as f:
for ch in data:
f.write('{}\n'.format(ord(ch)))
您想要的是struct
模块。 特别是struct.unpack()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.