【发布时间】: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