首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Python代码转换为GDL90时出现问题

将Python代码转换为GDL90时出现问题
EN

Stack Overflow用户
提问于 2021-09-30 17:54:16
回答 1查看 26关注 0票数 0

在CRC16规范中,有一段C代码可用于开发GDL90 -16校验和表。我已经将其转换为Python3.8,但结果是胡说八道,表值单调增长到超过16位。我做错了什么?

GDL90代码:

代码语言:javascript
复制
void crcInit( void )
{
    unsigned int i, bitctr, crc;
    for (i = 0; i < 256; i++)
    {
        crc = (i << 8);
        for (bitctr = 0; bitctr < 8; bitctr++)
        {
            crc = (crc << 1) ^ ((crc & 0x8000) ? 0x1021 : 0);
        }
        Crc16Table[i] = crc;
    }
}

我的翻译是:

代码语言:javascript
复制
crcTable = []
for i in range(256):
    crc = (i << 8)
    for bitctr in range(8):
        # original line crc = (crc << 1) ^ ((crc & 0x8000) ? 0x1021 : 0)
        if (crc & 0x8000):
            val = 0x1021
        else:
            val = 0
        crc = (crc << 1) ^ val
    crcTable.append(hex(crc))
EN

回答 1

Stack Overflow用户

发布于 2021-09-30 18:27:41

不要使用hex(crc) -它会将值转换为字符串。您没有包含Crc16Table的c定义-我猜您想要将8位或16位值保存到表中,以便保存crc&0xffcrc&0xffff

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69396844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档