zoukankan      html  css  js  c++  java
  • CRC16校验

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

    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; 
    }

    java代码如下,传入byte数组

    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);
        }
    

      

  • 相关阅读:
    JVM 体系结构
    字符集和编码
    Thinking in Java 笔记
    HSDB
    jdb
    JVM-Class文件
    JVM-操作码助记符
    表、栈和队列
    算法分析
    Shell 编程
  • 原文地址:https://www.cnblogs.com/qlong8807/p/3645135.html
Copyright © 2011-2022 走看看