algorithm - 无逻辑/按位运算的校验和

标签 algorithm checksum crc basic integer-arithmetic

我需要计算超过 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/

相关文章:

mysql - 搜索其每一列都与目标范围(整数)匹配的行

java - C 到 Java 端口 : calculating a 3 byte checksum

c++ - 如何确定 C++ 模板参数是否存储唯一键?

algorithm - 将变形字符串列表匹配到它们的正确值

go - 为什么我的滚动 adler32 校验和在 go 中不起作用? (模算术)

java - 如果我不同步这个方法,我会得到错误的值吗?

linux - 如何使用 zip -T 检查多个 zip 文件的 CRC

frame - 校验和位于以太网帧中的 "physically"位置?

algorithm - 查找以特定元素结尾的最长递增子序列如何导致查找 LIS 的解决方案

c++ - CRC-32C 传输文件的校验和