1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| +(uint16_t)calculateCRC:(NSData *)data start:(int)start end:(int)end{ Byte *bts = (Byte *)[data bytes]; uint16_t crc = (short) 0x0000; uint8_t i; for (int ii = start; ii <= end; ii++) { crc = crc ^ (bts[ii] << 8); for (i = 0; i < 8; i++) { if (crc & 0X8000) { crc = (crc << 1) ^ 0x1021; } else { crc <<= 1; } } crc &= 0XFFFF; } return crc; }
NSData *data = [@"abc" dataUsingEncoding:NSUTF8StringEncoding]; uint16_t res = [BluetoothManager calculateCRC:data start:0 end:2]; NSLog(@"calculateCRC %04x", res);
|