我有一个代码片段,它从套接字读取,并将所有字节追加到数组中(这是应该的工作方式),但是当我执行下面的代码时:
def receiveData:
bytemessage = bytearray()
while True:
b = s.recv(1)
logger.info(str(b))
bytemessage.append(b)
我在“bytemessage.append(B)”行中得到了这个错误
“字节”对象不能解释为整数示例
我可以记录我从套接字中读取的所有字节,它们都是字节格式的,就像这个b'\x01'
,有人有解决方案吗?
发布于 2021-09-21 22:23:45
来自文档
字节数组类是0 <= x<256个范围内的可变整数序列。
它不是泛型字节对象的容器。
您可以将所有部件添加到常规列表中,然后将它们全部连接在一起。
def receiveData():
parts = []
while True:
b = s.recv(1)
logger.info(str(b))
parts.append(b)
return b''.join(parts)
发布于 2021-09-21 22:38:40
从文档中,bytearray
是0 <= x<256个范围内的可变整数序列。您只能在该范围内追加一个整数。bytes
对象是同一范围内不可变的整数数组。所以你可以
bytemessage.append(b[0])
但是您也可以扩展bytearray
,如果您有一个具有多个字节的bytes
对象,这是很方便的。这也起作用。
bytemessage.extend(b)
这将比创建一个字节对象列表并在最后组合它们更节省空间。就我个人而言,即使只添加一个字节,我也会进行扩展,因为我认为语法没有那么混乱。
https://stackoverflow.com/questions/69279022
复制