CRC16-CRC32简单算法

易语言 2021-08-28 10:59:58

CRC16-CRC32简单算法

.子程序 校验_取CRC32, 整数型, 公开
.参数 数据, 字节集, , 例如:{ 1, 3, 0, 0, 0,1 }
.参数 校验码, 整数型, 可空, 默认 0xEDB88320=3988292384
.参数 初始值, 整数型, 可空, 默认 4294967295
.局部变量 i, 整数型

.如果真 (是否为空 (初始值))
初始值 = 4294967295
.如果真结束
.如果真 (是否为空 (校验码))
校验码 = 3988292384 ' 0xEDB88320=3988292384
.如果真结束
.计次循环首 (取字节集长度 (数据), i)
初始值 = 位异或 (初始值, 数据 [i])
.计次循环首 (8, )
.如果 (位与 (初始值, 1) = 1)
初始值 = 位异或 (位与 (右移 (初始值, 1), 2147483647), 校验码)
.否则
初始值 = 位与 (右移 (初始值, 1), 2147483647)
.如果结束

.计次循环尾 ()
.计次循环尾 ()
返回 (位取反 (初始值))