int calcByte(int crc, int b)
{
crc = crc ^ (int)b << 8;
for (int i = 0; i < 8; i++)
{
if ((crc & 0x8000) == 0x8000)
crc = crc << 1 ^ 0x1021;
else
crc = crc << 1;
}
return crc & 0xffff;
}
int calc(char* packet, int index, int count)
{
int crc = 0;
int i;
while (count > 0)
{
crc = calcByte(crc, packet[index++]);
count--;
}
return crc;
}
int I =calc(Buffer,1,12); //After sync byte, until CRC bytes
char *pp = (char*)&I;
Buffer[13]=pp[0];
Buffer[14]=pp[1];
char占一個字節包含8位
16位機是
char:一個字節,占8位
int:2個字節,占16位
long:4個字節,占32位