作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用蓝牙将 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)))
关于python - 如何从 Python 中的套接字读取字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481228/
我是一名优秀的程序员,十分优秀!