【问题标题】:get 15 bits CRC from any size bit array从任意大小的位数组中获取 15 位 CRC
【发布时间】:2015-01-05 10:30:44
【问题描述】:

我这样传输数据:[DATA - 任意大小的位数组][CRC 15 bits]。

如何从任何大小的位数组中获取 15 位 CRC 以检测对原始数据的意外更改?

这里开始代码:

byte crc[15];
int data_length = *any size*;
byte data[data_length];    // for example data = {1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,1,0,1,0,1,1}
crc = get_crc(crc);

get_crc - ? 

【问题讨论】:

    标签: java c crc


    【解决方案1】:

    正如评论者所说,您的代码示例没有位,只有字节。我假设您真的想要某个名为 data 的字节数组的最后 15 位,并且您检查了 data 至少有 2 个字节。
    就这么简单

    short crc = (data[data_length - 2] & 0x7f) | data[data_length - 1];  
    

    旁注:也许您已经意识到这一点,但 15 位 CRC 并不是最可靠的东西(但速度很快)。如果您的数据并非完全不重要,那么一些更好的算法可能是有意义的(SHA's,或者取决于用例,例如 ReedSolomon-encoding 等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      相关资源
      最近更新 更多