.版本 2
.子程序 _CRC16校验计算, 文本型
.参数 预校验内容, 字节型, 数组
.局部变量 crc, 字节型, , “2”
.局部变量 返回数据, 整数型
.局部变量 j, 整数型
.局部变量 被校验内容, 字节型
.局部变量 i, 整数型
.局部变量 CY, 整数型
.局部变量 crc高位, 文本型
.局部变量 crc低位, 文本型
crc = { 255, 255 }
.计次循环首 (取数组成员数 (预校验内容), j)
被校验内容 = 预校验内容 [j]
crc [2] = 位异或 (被校验内容, crc [2])
.计次循环首 (8, i)
CY = 位与 (crc [2], 1) 检查CRC[2]与1有没有共同位
.如果 (CY = 1) 如果CRC[2]与1有共同为
crc [2] = 右移 (crc [2], 1) 低位右移一位
.如果真 (位与 (crc [1], 1) = 1) 如果校验高位与1有共同位
crc [2] = 位或 (crc [2], 128) 给crc低位最高位补1
.如果真结束
crc [1] = 右移 (crc [1], 1) crc高位右移一位
crc [2] = 位异或 (crc [2], 1) CRC低位与生成多项式0XA001求异或
crc [1] = 位异或 (crc [1], 160) CRC高位与生成多项式0XA001求异或
.否则
crc [2] = 右移 (crc [2], 1) 低为右移一位
.如果真 (位与 (crc [1], 1) = 1) 如果校验高位与1有共同位
crc [2] = 位或 (crc [2], 128) 给crc低位最高位补1
.如果真结束
crc [1] = 右移 (crc [1], 1) 高位右移1位
.如果结束
.计次循环尾 ()
.计次循环尾 ()
.如果真 (取文本长度 (到文本 (crc [1])) = 1)
crc高位 = “00” + 到文本 (crc [1])
.如果真结束
.如果真 (取文本长度 (到文本 (crc [1])) = 2)
crc高位 = “0” + 到文本 (crc [1])
.如果真结束
.如果真 (取文本长度 (到文本 (crc [1])) = 3)
crc高位 = 到文本 (crc [1])
.如果真结束
.如果真 (取文本长度 (到文本 (crc [2])) = 1)
crc低位 = “00” + 到文本 (crc [2])
.如果真结束
.如果真 (取文本长度 (到文本 (crc [2])) = 2)
crc低位 = “0” + 到文本 (crc [2])
.如果真结束
.如果真 (取文本长度 (到文本 (crc [2])) = 3)
crc低位 = 到文本 (crc [2])
.如果真结束
返回 (crc高位 + crc低位)