|
crc32应该是一个8位的十六进制数,模块中的进制转换 “返回 (取十六进制文本 (位取反 (crcval)))” 中的 取十六进制文本() 会把前面的0给省略掉,导致某些项目无法通过校验原因就是因为crc32值不足8位,应该加上一个参数来选择是否补0来补齐8位
改进后的代码:
|
校验_取crc32 | 文本型 | | |
字节集xx | 字节集 | | | | 是否在前端补零 | 逻辑型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | crcval | 整数型 | | | 长度 | 整数型 | | | i | 整数型 | | | 结果 | 文本型 | | | 位置 | 整数型 | | | crc | 整数型 | | | table | 整数型 | | 256 | crc32 | 文本型 | | |
长度 = 取字节集长度 (字节集xx ) 如果真 (长度 < 1 ) 返回 (“”) 变量循环首 (0, 255, 1, i )  crc = i  变量循环首 (1, 8, 1, )  如果 (位与 (crc, 1 ) ≠ 0 )   crc = 位异或 (位与 (右移 (crc, 1 ), 2147483647 ), 3988292384 )    crc = 位与 (右移 (crc, 1 ), 2147483647 )    变量循环尾 () table [i + 1 ] = crc 变量循环尾 ()crcval = 4294967295 计次循环首 (长度, i ) 位置 = 位异或 (字节集xx [i ], 位与 (crcval, 255 )) + 1  crcval = 位异或 (位与 (右移 (crcval, 8 ), 16777215 ), table [位置 ]) 计次循环尾 ()crc32 = 取十六进制文本 (位取反 (crcval )) 如果真 (是否在前端补零 ) crc32 = 文本_自动补零 (crc32, 8 )返回 (crc32)
|
评分
-
查看全部评分
|