gpt4 book ai didi

objective-c - 我的 CRC-12 实现有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:17 26 4
gpt4 key购买 nike

这是我目前所拥有的,但似乎与 http://zorc.breitbandkatze.de/crc.html 不匹配一直。

short crcTable[256];
for (int i = 0; i < 256; i++) {
int crc = (i << 4);
for (int j = 0; j < 8; j++) {
crc = (crc << 1) ^ ((crc & 0x800) ? 0x80F : 0);
}
crcTable[i] = crc & 0xFFF;
}


NSString *theString = @"blah";

unsigned char *string = (unsigned char *)[theString UTF8String];
int length = [theString length];

unsigned short crc = 0;
for (int i = 0; i < length; i++) {
crc = crcTable[(crc ^ string[i]) & 255] ^ (crc >> 8);
}

NSLog(@"%X", crc);

我们的一个实现不正确,我假设它是我的。但我不知道哪里出了问题,或者真的不知道如何解决问题。非常感谢任何帮助。

亚力克

最佳答案

1 替换

crc = crcTable[(crc ^ string[i]) & 255] ^ (crc >> 8);

通过

 crc = crcTable[(crc >> 4) ^ string[i]] ^ (crc << 8);

2 在使用它们计算 crc 值之前,请镜像每个消息字节的 8 位。

3 最后镜像最终的crc的12位。

作为最后一个 mod 的替代方案,您也可以只执行 crc & 0xfff 并告诉 breitbandkatze“反转数据字节”。

关于objective-c - 我的 CRC-12 实现有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8005199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com