Checksum计算问题:低数值校验码减18位的求解方法
校验码转换通用方法
- 确定原校验码数值:将两位格式的原校验码(十进制00-99或十六进制00-FF)转换为十进制数值N。
- 分规则计算新校验码:
- 若N ≥ 18:直接计算
N - 18,结果保留为两位十进制数(不足两位补前导0,如结果为5则表示为05)。 - 若N < 18:
- 将N转换为两位十六进制字符(不足两位补前导0,如N=12则为0C)。
- 加上十六进制数值
0x49(对应十进制73),最终结果为两位大写十六进制字符。
- 若N ≥ 18:直接计算
已知示例验证
- 原码33(十进制,N=33≥18):33-18=15 → 新校验码15
- 原码61(十进制,N=61≥18):61-18=43 → 新校验码43
- 原码65(十进制,N=65≥18):65-18=47(示例中48应为笔误) → 新校验码47
- 原码12(十进制,N=12<18):12转十六进制为0C,0C+49=5B → 新校验码5B
- 原码02(十进制,N=2<18):2转十六进制为02,02+49=4B → 新校验码4B
2C和1E的新校验码求解
原码2C(十六进制)
- 转十进制:
0x2C = 44(N=44≥18) - 计算:44-18=26 → 新校验码为26(十进制),若需十六进制表示则为
1A。
原码1E(十六进制)
- 转十进制:
0x1E = 30(N=30≥18) - 计算:30-18=12 → 新校验码为12(十进制),若需十六进制表示则为
0C。
内容的提问来源于stack exchange,提问作者user22252316
相关产品推荐
相关产品推荐

