zhijingbu2
zhijing_
2016-06-27 03:27
采纳率: 100%
浏览 1.2k
已采纳

将下面C++语言版的CRC校验改为C#语言版 谢谢

static unsigned short crc16_update(unsigned short crc, unsigned char a)
{
int i;
crc ^= a;
for (i = 0; i < 8; ++i)
{
if (crc & 1)
{
crc = (crc >> 1) ^ 0xA001;
}
else
{
crc = (crc >> 1);
}
}
return crc;
}

//------------------
static unsigned short getChk(unsigned char * b,int len)
{
unsigned short crc=0xffff;
while(len--)
{
crc=crc16_update(crc,*b++);
}
return crc;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • caozhy
    已采纳
     if (crc & 1 != 0)
    
    点赞 评论
  • caozhy
     static ushort crc16_update(ushort crc, ubyte a)
    {
    int i;
    crc ^= a;
    for (i = 0; i < 8; ++i)
    {
    if (crc & 1)
    {
    crc = (crc >> 1) ^ 0xA001;
    }
    else
    {
    crc = (crc >> 1);
    }
    }
    return crc;
    }
    //------------------
    static ushort getChk(ubyte[] b)
    {
    int i = 0;
    ushort crc=0xffff;
    while(len--)
    {
    crc=crc16_update(crc, b[i++]);
    }
    return crc;
    }
    
    点赞 评论
  • zhijingbu2
    zhijing_ 2016-06-27 06:22

    图片说明

    点赞 评论
  • zhijingbu2
    zhijing_ 2016-06-27 08:03

    图片说明

    点赞 评论

相关推荐