我有一个代码片段,它从套接字读取并将所有字节附加到一个数组(这就是它应该如何工作),但是当我执行下面的代码时:
def receiveData:
bytemessage = bytearray()
while True:
b = s.recv(1)
logger.info(str(b))
bytemessage.append(b)
我在“bytemessage.append(b)”所在行收到此错误
'bytes' object cannot be interpreted as an integer Example
我可以记录从套接字读取的所有字节,并且所有字节都是字节格式,如 b'\x01'
有人有解决方案吗?
最佳答案
来自文档,bytearray
是 0 <= x < 256 范围内的可变整数序列。您只能附加该范围内的整数。 bytes
对象是同一范围内的整数的不可变数组。所以你可以这样做
bytemessage.append(b[0])
但是您也可以扩展 bytearray
,如果您有一个包含多个字节的 bytes
对象,这会很方便。这也有效
bytemessage.extend(b)
这比创建字节对象列表并在最后组合它们更节省空间。就我个人而言,即使只添加一个字节,我也会进行扩展,因为我认为语法不会那么困惑。
关于python - “bytes”对象不能被解释为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69279022/