“字节”对象不能解释为整数

2024-06-26 13:49:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从套接字读取并将所有字节追加到数组的代码段(这是它应该如何工作的),但当我执行以下代码时:

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' 有人有解决方案吗


Tags: 代码infotrue字节def代码段数组logger
2条回答

从文档中,^{}是范围为0<;=x<;256. 只能在该范围内追加一个整数。bytes对象是相同范围内整数的不可变数组。所以你可以

bytemessage.append(b[0])

但是,您也可以扩展bytearray,如果您有一个包含多个字节的bytes对象,这将非常方便。这同样有效

bytemessage.extend(b)

这将比创建字节对象列表并在最后合并它们更节省空间。就我个人而言,即使只添加一个字节,我也会进行扩展,因为我认为语法不那么混乱

docs

The bytearray class is a mutable sequence of integers in the range 0 <= x < 256.

它不是泛型字节对象的容器

您可以将所有零件添加到常规列表中,然后将它们全部连接在一起

def receiveData():
    parts = []
    while True:             
        b = s.recv(1)
        logger.info(str(b))    
        parts.append(b)
    return b''.join(parts)

相关问题 更多 >