-(uint16_t)hx_CRC16:(Byte *)sendBuf length:(uint16_t)len{
uint wCRCTalbeAbs[] = {
0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400,
};
uint16_t wCRC =0xFFFF;
uint8_t chChar;
for (uint16_t i = 0; i < len; i++) {
chChar = sendBuf[i];
wCRC = wCRCTalbeAbs[(chChar ^ wCRC) &15] ^ (wCRC >> 4);
wCRC = wCRCTalbeAbs[((chChar >> 4) ^ wCRC) & 15] ^ (wCRC >> 4);
}
NSLog(@"wCRC:%hu",wCRC);
int right,left;
right = wCRC & 0x00ff; // 取低8位 221 0xDD
left = (wCRC >> 8) & 0x00ff; //取高8位 223 0xDF
return wCRC;
}
蓝牙数据传输 生成CRC16 checksum校验码的函数
猜你喜欢
转载自blog.csdn.net/zhoudaxiaq/article/details/106216094
今日推荐
周排行