首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用long (64位)的CRC校验和

使用long (64位)的CRC校验和
EN

Stack Overflow用户
提问于 2012-03-01 22:41:30
回答 1查看 6.4K关注 0票数 6

我检查了CRC64的不同实现。例如,thisthisthis。所有这些的问题在于它们都是与字节一起工作的。但是,在64位系统上,我想使用long (8字节)。这样,我将需要更少的迭代。例如,对于128字节的数据,使用byte,我需要迭代128次,而使用long,我只需要迭代16次。

是否有任何CRC64实现使用long,甚至使用大于一个字节的字长?这些计划是否可以修改以做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-01 23:15:59

CRC计算使用一个技巧来避免逐位处理数据:它使用一个查询表,允许它一次处理多个比特。

一次处理n比特需要大小为2^n的查找表。您链接的实现一次读取1字节(8位),实际上它们都使用大小为256 == 2^8的查找表。

一次处理64位将需要2^64大小的查找表,这是不切实际的。这就是为什么常见的CRC实现一次处理一个字节的原因。

虽然可以使用65536个条目的数组一次处理2个字节,但由于使用了更多的CPU缓存,这可能会对性能产生负面影响。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9518166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档