我需要计算超过 15 个字节的 1 个字节校验和。我的第一个想法是使用类似 crc8 的东西,但问题是我必须使用一个非常有限的 BASIC 解释器,它只支持基本算术运算 (+-*/) 但不支持按位“xor”、“and”或“or”并且没有“移位”操作。
所以我的问题是:是否有可能在这些限制条件下计算出比较合理的校验和?我认为计算总和将是一个糟糕的解决方案,但目前我想不出其他办法。
最佳答案
LET a = 1
LET b = 0
FOR n = 1 to 15
LET a = a + c(n)
LET b = b + a
NEXT n
LET b = mod(b, 251)
然后用b
作为校验值。与简单求和相比,它的优势在于它不可交换。字节的顺序很重要。此外,一串零不会给你零,校验值取决于有多少个零。
关于algorithm - 无逻辑/按位运算的校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26871462/