【问题标题】:Calculating CRC-CCITT (Kermit) on two different sites, gives different results在两个不同的站点上计算 CRC-CCITT (Kermit),得到不同的结果
【发布时间】:2018-08-05 01:41:48
【问题描述】:

我在玩 CRC-CCITT (Kermit),我注意到在不同站点上计算校验和时,我得到了不同的结果。

在 lammertbies.nl/comm/info/crc-calculation.html 上 123456789 的结果是 0x8921,但在 crccalc.com 上是 0x2189。

事实上,无论你在 crccalc 上输入什么值,结果都与 lammertbies 相同,但最后两个字符在前。所以 foobar 在 lammertbies 上是 0xF4E3,但在 crccalc 上是 0xE3F4。

哪个网站是正确的,另一个网站做错了什么?

【问题讨论】:

    标签: checksum crc16 kermit


    【解决方案1】:

    这是报告的 CRC 值中大端与小端的问题。

    您可以通过将 CRC 附加到字符串并检查附加字符串的 CRC == 0 来验证大多数 CRC 实现。返回两个 CRC 计算器网站,将输入更改为十六进制,输入十六进制字符串

    “3132333435363738398921”

    Kermit CRC 将为 0000,因此附加到字符串的 CRC 将为 0x89, 0x21。

    【讨论】:

    • 哇,谢谢!我不知道。有没有办法使用相同的方法来验证包含字母的 CRC 结果(例如 foobar 的 0xF4E3 结果)?
    • @Josey - 是的,只需输入十六进制的 ascii 值,后跟 CRC,在“foobar”的情况下使用:“666F6F626172F4E3”。
    • 谢谢!我试过了,它没有用,但现在它可以了,所以我一定做错了什么。
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2020-08-31
    • 1970-01-01
    相关资源
    最近更新 更多