我是新来的蟒蛇。
我的代码之一是:
def _checksum(self, data):
if sum(len(i) for i in data) & 1:
data.append('\0')
**words = array('h', ''.join(data))**
checksum = 0
for word in words:
checksum += word & 0xffff
hi = checksum >> 16
low = checksum & 0xffff
checksum = hi + low
checksum += (checksum >> 16)
return ~checksum & 0xffff在python 2中,它的工作,但在python 3中有错误:
TypeError:序列项0:预期的str实例,找到的字节
据我所知,代码行有问题:
words = array('h', ''.join(data))但我不知道怎么解决这个问题
谢谢你的帮助!
发布于 2022-03-18 13:17:10
代码中的问题不是array(),而是join()函数。
当您使用join时
words = array('h', ''.join(data))您使用的是str.join方法,它要求所有参数都是字符串。但是在您的data中,值是bytes,或者至少第一个是字节。
如果要连接字节,则必须将其使用如下
words = array('h', b''.join(data))而且所有的值都必须是数据中的字节。
https://stackoverflow.com/questions/71527573
复制相似问题