Это то, что я имею до сих пор, но, кажется, оно не соответствует 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);
Одна из наших реализаций неверна, я предполагаю, что она моя. Но я понятия не имею, что не так, или на самом деле, как решить, что не так. Любая помощь будет высоко ценится.
Alec