python中的Bytearray和

2024-06-08 09:45:22 发布

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

我在python 2.7中使用bytearray来解析来自串行端口的数据流。我正面临一个奇怪的行为:我试图计算接收包的校验和以检查其有效性,但是我对bytearray上的sum()函数有问题。我本以为,作为字节数组,它会把每个字节相加,对吧?只是没有。。

例如:我有这个包

str = '200a02daffe0fe3d140500f6fff6ff6df42c0aabfe'
b = bytearray(str)

总结其内容输出:

sum(b)
3263

正确的结果是

2915

至少这是计算器说的。 此函数:

def somma_hex(str):
    s = 0
    for i in range(0,len(str)-1,2):
        s += int(byte[i:i+2],16)

输出正确的值2915。

没什么大不了的,我可以用我写的简单函数来代替sum()但是我想知道,发生了什么?

谢谢


Tags: 端口函数内容字节def数组校验计算器