|
- .版本 2
- .程序集 程序集1
- .程序集变量 CRC64表格, 长整数型, , "256"
- .程序集变量 CRC64常数, 长整数型, , "3"
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- 初始化CRC64 ()
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 初始化CRC64
- .局部变量 i, 整数型
- .局部变量 crc, 长整数型
- CRC64常数 [1] = 取字节集数据 ({ 255, 255, 255, 255, 255, 255, 255, 127 }, #长整数型, )
- CRC64常数 [2] = 取字节集数据 ({ 66, 15, 135, 215, 149, 87, 108, 201 }, #长整数型, )
- CRC64常数 [3] = 取字节集数据 ({ 255, 255, 255, 255, 255, 255, 255, 0 }, #长整数型, )
- .变量循环首 (0, 255, 1, i)
- crc = i
- .计次循环首 (8, )
- crc = 长整数位异或 (长整数位与 (长整数右移 (crc, 1), CRC64常数 [1]), 选择 (长整数位与 (crc, 1) = 1, CRC64常数 [2], 0))
- .计次循环尾 ()
- CRC64表格 [i + 1] = crc
- .变量循环尾 ()
- .子程序 长整数右移, 长整数型
- .参数 值, 长整数型
- .参数 位数, 整数型
- 置入代码 ({ 139, 69, 8, 139, 85, 12, 139, 77, 16, 128, 249, 64, 115, 14, 128, 249, 32, 115, 16, 15, 173, 208, 211, 250, 201, 194, 12, 0, 193, 250, 31, 137, 208, 235, 245, 137, 208, 193, 250, 31, 128, 225, 31, 211, 248, 235, 233 })
- 返回 (0)
- .子程序 长整数位与, 长整数型
- .参数 值1, 长整数型
- .参数 值2, 长整数型
- 置入代码 ({ 139, 69, 8, 139, 85, 12, 35, 69, 16, 35, 85, 20, 201, 194, 16, 0 })
- 返回 (0)
- .子程序 长整数位异或, 长整数型
- .参数 值1, 长整数型
- .参数 值2, 长整数型
- 置入代码 ({ 139, 69, 8, 139, 85, 12, 51, 69, 16, 51, 85, 20, 201, 194, 16, 0 })
- 返回 (0)
- .子程序 长整数位取反, 长整数型
- .参数 值, 长整数型
- 置入代码 ({ 139, 69, 8, 139, 85, 12, 247, 208, 247, 210, 201, 194, 8, 0 })
- 返回 (0)
- .子程序 _临时子程序
- .局部变量 失败, 逻辑型
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- 输出调试文本 (CRC64_文件 (“data.bin”, 失败, ))
- 输出调试文本 (失败)
- .子程序 CRC64_文件, 长整数型, 公开
- .参数 文件名, 文本型, , 文件路径或文件名
- .参数 失败, 逻辑型, 参考 可空, 计算失败传出真,成功为假
- .参数 缓存容量, 整数型, 可空, 单位字节,留空默认1Mb
- .局部变量 分段, 字节集
- .局部变量 长度, 整数型
- .局部变量 crc, 长整数型
- .局部变量 计数, 整数型
- .局部变量 文件号, 整数型
- .如果真 (缓存容量 ≤ 0)
- 缓存容量 = 1048576
- .如果真结束
- 文件号 = 打开文件 (文件名, 1, 3)
- .如果真 (文件号 = 0)
- 失败 = 真
- 返回 (0)
- .如果真结束
- crc = -1
- .判断循环首 (真)
- 分段 = 读入字节集 (文件号, 缓存容量)
- 长度 = 取字节集长度 (分段)
- .如果 (长度 = 0)
- 跳出循环 ()
- .否则
- .计次循环首 (长度, 计数)
- crc = 长整数位异或 (CRC64表格 [长整数位与 (长整数位异或 (crc, 分段 [计数]), 255) + 1], 长整数位与 (长整数右移 (crc, 8), CRC64常数 [3]))
- .计次循环尾 ()
- .如果结束
- .判断循环尾 ()
- 关闭文件 (文件号)
- 失败 = 假
- 返回 (长整数位取反 (crc))
复制代码 |
|