我正在使用pySerial从连接的设备读取数据.我想计算每个收到的数据包的校验和.数据包作为char数组读入,实际校验和是数据包末尾的最后一个字节.为了计算校验和,我通常会对数据包有效负载求和,然后将其与实际校验和进行比较.
通常在像C这样的语言中,我们会期望溢出,因为校验和本身只有一个字节.我不确定python的内部,但根据我对该语言的经验,它看起来会默认为更大的大小变量(也许是一些内部的bigInt类或其他东西).无论如何都有模仿添加两个字符的预期行为,而不编写我自己的实现?谢谢.
当然,只需取结果的模数,使其符合您想要的尺寸.您可以在结束或每个步骤执行模数.例如:
>>> 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)