首页 > 其他 > 详细

CRC16校验

时间:2014-04-05 01:47:18      阅读:641      评论:0      收藏:0      [点我收藏+]

C++中的代码如下:传入字节(byte)数组引用和数组长度

 

bubuko.com,布布扣
unsigned short CTcpClient::Crc16(const char *pBuf, unsigned short nLen)
{
    BYTE i;
    unsigned short crc = 0;

    while (nLen--)
    {
        for (i = 0x80; i != 0; i >>= 1)
        {
            if ((crc&0x8000) != 0)
            {
                crc <<= 1;
                crc ^= 0x1021;
            }
            else
            {
                crc <<= 1;
            }
            if ((*pBuf&i) != 0)
            {
                crc ^= 0x1021;
            }
        }
        pBuf++;
    }

    return crc; 
}
bubuko.com,布布扣

 

java代码如下,传入byte数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static int getCrc16 ( byte[] b )
    {
        int crc, i;
        crc = 0;
        int count = b.length;
        for(int c =0;c<count;c++)
        {
            crc = (int) (crc ^ (int) b[c] << 8);
            for(i = 0; i < 8; i++)
            {
                if ((crc & 0x8000) != 0)
                    crc = (int) (crc << 1 ^ 0x1021);
                else
                    crc = (int) (crc << 1);
            }
        }
        return (int) (crc & 0xFFFF);
    }

  

 

 

CRC16校验,布布扣,bubuko.com

CRC16校验

原文:http://www.cnblogs.com/qlong8807/p/3645135.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!