繁体   English   中英

Java - 如何计算BitSet的CRC16

[英]Java - How to calculate CRC16 of BitSet

我有一个 Java BitSet,其中有一些数据。 这个 BitSet 的长度是 545 位。 问题:所有当前已知的实现只能使用字节数组,但是将我的 BitSet 转换为字节数组会更改数据,因为我需要进行一些填充。 是否有任何已知的实现可以处理我的数据而无需将其调整为整个字节?

使用.toByteArray()将位转换为字节序列。 您需要知道需要什么 CRC-16 定义(多项式、排序、预处理和后处理),以及处理位的顺序。 .toByteArray()会将集合中的第一位放在第一个字节的最低有效位中。

然后就可以使用crcany为你需要的CRC-16生成C码了。 生成的代码包括一个crc16..._rem()例程,用于用多个位更新 CRC。 对于具有n位的 BitSet,您将首先计算前n >> 3个字节的 CRC。 然后使用crc16..._rem()使用最后一个字节中的n & 7位更新 CRC。 将 C 代码转换为 Java 很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM