首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >堆叠完毕。python上的crc

堆叠完毕。python上的crc
EN

Stack Overflow用户
提问于 2017-01-05 19:04:51
回答 1查看 176关注 0票数 1

我必须计算16bCRC。

它是十六进制格式的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = "01190026032700169798001100000358057900002893"

数据的CRC如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
crc = "b83a"

该crc是用这些函数来计算

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unsigned short CRC(unsigned char *s, int len, unsigned
short crcval)
{
register unsigned c,q;
for (; len; len--)
{
c = *s++;
q = (crcval ^ c) & 017;
crcval = (crcval >> 4) ^ (q * 010201);
q = (crcval ^ (c >> 4)) & 017;
crcval = (crcval >> 4) ^ (q * 010201);
}
return (crcval);
}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uint16_t sas_crc_add_byte(uint16_t crc, uint8_t b)
{
    uint16_t q = (crc ^ b) & 017;
    crc = (crc >> 4) ^ (q * 010201);
    q = (crc ^ (b >> 4)) & 017;
    crc = (crc >> 4) ^ (q * 010201);
    return crc;
}

好的,我试试这样的方法。但是结果是不同的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def crc(b, seed=0):
    for x in b:
        q = (seed ^ int(x, 16)) & 0o17
        seed = (seed >> 4) ^ (q * 0o10201)
        q = (seed ^ (int(x, 16) >> 4)) & 0o17
        seed = (seed >> 4) ^ (q * 0o10201)
    return hex(seed)
EN

回答 1

Stack Overflow用户

发布于 2017-01-05 20:22:50

完成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def crc(b, seed=0):
    c = ''
    for x in b:
        c = c + x
        if len(c) == 2:
            q = (seed ^ int(c, 16)) & 0o17
            seed = (seed >> 4) ^ (q * 0o010201)
            q = (seed ^ (int(c, 16) >> 4)) & 0o17
            seed = (seed >> 4) ^ (q * 0o010201)
            c=''
    data = hex(seed)
    data = data[4:] + data[2:-2]
    return data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41492746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文