有没有办法在python中添加带溢出的两个字节?

3 python checksum overflow

我正在使用pySerial从连接的设备读取数据.我想计算每个收到的数据包的校验和.数据包作为char数组读入,实际校验和是数据包末尾的最后一个字节.为了计算校验和,我通常会对数据包有效负载求和,然后将其与实际校验和进行比较.

通常在像C这样的语言中,我们会期望溢出,因为校验和本身只有一个字节.我不确定python的内部,但根据我对该语言的经验,它看起来会默认为更大的大小变量(也许是一些内部的bigInt类或其他东西).无论如何都有模仿添加两个字符的预期行为,而不编写我自己的实现?谢谢.

Kiv*_*Kiv 6

当然,只需取结果的模数,使其符合您想要的尺寸.您可以在结束或每个步骤执行模数.例如:

>>> payload = [100, 101, 102, 103, 104] # arbitrary sequence of bytes
>>> sum(payload) % 256 # modulo 256 to make the answer fit in a single byte
254 # this would be your checksum
Run Code Online (Sandbox Code Playgroud)

  • 好简单的例子.注意,截断到一个字节的另一种常见方法是按位AND与0xFF,所以"sum(payload)&0xFF". (4认同)