微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何计算 24 位长十六进制的 CRC-32例如 0xAAAAAA00?

如何解决如何计算 24 位长十六进制的 CRC-32例如 0xAAAAAA00?

通常,CRC-32 是针对 32 位及其倍数计算的。我想计算 24 位数字的 CRC-32。如何执行此类操作。我不是计算机科学背景,所以对 CRC-32 没有透彻的了解,所以请帮忙。

解决方法

实际的数学计算实际上是在计算 CRC 时将 32 个零位附加到 24 位数字。软件版本通过根据需要循环 CRC 来模拟这一点。

为简化起见,假设数字以大端格式存储。然后可以将 24 位值放入 32 位寄存器,并且 32 位寄存器循环 32 次(模拟附加 32 个零位)以产生 CRC。由于将24位数字放入32位寄存器后会产生8个前导零位,因此第一步可以将24位数字左移8位,然后循环CRC 24次。

如果使用查表一次处理一个字节和保存 24 位数字的 3 字节数据,则该进程将下一个字节异或到 32 位 CRC 寄存器的高 8 位,然后使用该表进行模拟循环 32 位 CRC 8 次。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。