ushort calc_crc(byte[] str, uint len)
{
byte i;
ushort crc = 0xffff;
//string+=4; //从地址位开始计算//
int num = 4;
while (len-- != 0)
{
for (i = 0x80; i != 0; i /= 2)
{
if ((crc & 0x8000) != 0)
{
crc *= 2;
crc ^= 0x1021;
}
else crc *= 2;
if ((str[num] & i) != 0)
crc ^= 0x1021;
}
num++;
}
return crc;
}