go hash/crc32: 文档中记录的CRC32-Q的哈希码错误,

hgqdbh6s  于 4个月前  发布在  Go
关注(0)|答案(1)|浏览(37)

Go版本
不相关

在你的模块/工作区中 go env 的输出:

not relevant

你做了什么?

https://pkg.go.dev/hash/crc32#example-MakeTable 上的示例使用CRC32-Q多项式生成校验和,所以它看起来应该产生正确的CRC32-Q校验和。

你看到了什么?

产生的校验和值 - 2964d064 - 不正确。
原因是 hash/crc32 只支持某些特定的crc32算法变体,而CRC32-Q需要在 hash/crc32 中实现的其他设置。有一个提案在 #60992 中支持其他变体。

你期望看到什么?

计算 "Hello world" 的CRC32-Q校验和时的预期输出是 "0xA790E213",如 https://crccalc.com/?crc=Hello+world&method=CRC-32Q&datatype=ascii&outtype=0 所示。
这里最简单的修复方法是删除示例,我认为这将是一个改进。最好不要提供错误的示例。
不过,给出一些关于陷阱的提示会更有帮助。
我已经尝试在 https://go.dev/play/p/_avQEOSV2uJ 上修复示例,但也许这太复杂了,无法放入标准文档中。

相关问题