当前位置: 首页 > 知识库问答 >
问题:

截断多项式在CRC16 CCITT中的意义

公西翊歌
2023-03-14

他们使用术语截断多项式来表示:0x1021。他们使用什么模式将此0x1021扩展到此0x11021

共有1个答案

甘永春
2023-03-14

0x11021表示F2[X]中的多项式P=X^16+X^12+X^5+X^0。消息(连同初始值和增强)也用多项式表示。CRC基本上只是消息模多项式p。因此,CRC不需要超过2个字节。由于p=0 mod p,我们可以编写x^16=x^12+x^5+x^0 mod p。所以0x1021表示x^12+x^5+x^0

现在让我们看看update_good_crc是如何工作的:

void update_good_crc(unsigned short ch)
{
    unsigned short i, v, xor_flag;

    /*
    Align test bit with leftmost bit of the message byte.
    */
    v = 0x80;

    for (i=0; i<8; i++)
    {
        if (good_crc & 0x8000)
        {
            xor_flag= 1;
        }
        else
        {
            xor_flag= 0;
        }
        good_crc = good_crc << 1;

        if (ch & v)
        {
            /*
            Append next bit of message to end of CRC if it is not zero.
            The zero bit placed there by the shift above need not be
            changed if the next bit of the message is zero.
            */
            good_crc= good_crc + 1;
        }

        if (xor_flag)
        {
            good_crc = good_crc ^ poly;
        }

        /*
        Align test bit with next bit of the message byte.
        */
        v = v >> 1;
    }
}

>

  • 检查good_crc的最高有效位是否设置为零。换句话说,它检查x^15的系数是设置为1还是0。

    if (good_crc & 0x8000)
    {
        xor_flag= 1;
    }
    

  •  类似资料:
    • 在Android中,选项卡式页面标题在选项卡式页面中被截断 但在iOS设备上运行良好 我正在使用这个代码

    • 问题内容: 有可能用一个SQL语句,多个表截断吗? 像这样: 问候 问题答案: 不可以,您只能使用TRUNCATE命令截断单个表。要截断多个表,可以使用T-SQL并遍历表名以一次截断每个表名。 您可以在@tableList变量中用逗号分隔所有表名,是的,如果有前缀,则可以截断来自不同模式的多个表。

    • 问题内容: 我试图截断一个表,但是为什么它不起作用?数据库查询中一定有问题吗? 理想情况下,我想一次性截断所有表-有可能吗? 如果您想知道我用来进行数据库查询的类的内容是什么, 谢谢。 编辑: 下面是我如何调用db对象, 问题答案: 谢谢你们的帮助!这是我的答案,

    • JasperReports引擎似乎无法计算页面中的最大字符数,如果输入文本有粗体html标记,然后在导出为PDF时删除剩余的单词。我使用的是JasperReports 6.2.0 这是源代码: 编辑:添加字体扩展属性

    • 我有一个代表. csv文件结构的自定义类,它稍后会读入该类的arrayList。它有以下标签: 这是简化的. csv文件: 当我将这些读入arrayList并将各个状态放在consolse上只是为了检查时,它会正确显示(IN_STOCK,OUT_OF_STOCK)。但是,当我尝试将其插入数据库时,它会被截断: java.sql.SQLException:第1行的列“Status”的数据被截断 以下

    • 问题内容: 我在截断数据时遇到了一些麻烦。我正在使用SQL的GETDATE()函数来获取当前日期和时间,并将它们输入数据库。但是,我只想保存日期和时间直到分钟。换句话说,我希望在输入新数据时保存dd/ mm / yyyy hh:mm:00.000或dd / mm / yyyy hh:mm。我该怎么做呢? 我应该注意我正在使用MS-SQL。 问题答案: 有许多方法可以做到这一点。 例如,您可以将生成