【问题标题】:What is the correct CRC value for a zero length check?零长度检查的正确 CRC 值是多少?
【发布时间】:2020-08-06 15:52:17
【问题描述】:

我有一个用“C”编码的 CRC-32/ISO-HDLC 计算函数。它工作正常,如果我输入它'123456789',它会给出正确的结果0xCBF43926。 但是,对于空字符串 '' ,我应该得到什么正确结果?

我的函数给出了“0x00000000”,考虑到代码的编写方式,这是可以理解的。但是我检查的参考计算器给出了 0xD202EF8D !!

我正在检查这个工具:https://crccalc.com/?crc=&method=crc32&datatype=ascii&outtype=hex

我的代码基于此参考:https://www.rfc-editor.org/rfc/rfc1662,它使用查找表技术。

其他一些在线工具也为零长度输入提供 0x0000。哪个工具在这个问题上是正确的?

【问题讨论】:

  • 尝试使用this online CRC calculator instead。选择“CRC32”(默认为 CRC-32)。
  • 是的 Sunshine 的工具工作正常。但是,在向 crccalc.com 提出支持请求后,该工具现在也得到了更正。那么它现在阻止你输入一个零长度的字符串!
  • 在零长度字符串的情况下,CRC被初始化为0xffffffff,后跟0xffffffff的最终异或,导致CRC == 0。在初始化不同CRC的情况下到 0xffffffff,但最终 xor = 0,则 CRC 将为 0xffffffff。

标签: crc32


【解决方案1】:

我正在检查这个工具:https://crccalc.com/?crc=&method=crc32&datatype=ascii&outtype=hex

我不相信这个工具适用于零长度。 0x00000000 的值对于零长度是正确的。

它确实适用于各种其他数据长度和数据。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2019-05-16
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2016-04-13
    相关资源
    最近更新 更多