You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GDL90规范CRC-16校验表C代码转Python3.8结果异常排查咨询

问题排查与解决方案

错误根因

你转换后的代码异常核心是C和Python的整数运算机制差异:

  • C语言中代码使用的无符号整型为16位宽度,每次左移操作产生的超出16位的高位会被自动截断,最终结果天然限定在16位范围内
  • Python的整数为任意精度类型,没有位宽限制,左移产生的高位会一直保留,累加后就会出现数值超出16位、单调递增的异常结果

修复方法

在每轮CRC运算完成后,手动添加16位掩码& 0xFFFF,丢弃超出16位的高位即可。

修正后代码

crcTable = []
for i in range(256):
    crc = (i << 8) & 0xFFFF
    for bitctr in range(8):
        val = 0x1021 if (crc & 0x8000) else 0
        crc = ((crc << 1) ^ val) & 0xFFFF
    crcTable.append(hex(crc))

验证说明

修正后生成的CRC表和GDL90规范定义的CRC-16(多项式0x1021)查找表完全一致,可直接使用。

内容的提问来源于stack exchange,提问作者C382

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:39:03