1. 程式人生 > >異或校驗和CRC16 校驗原始碼分享

異或校驗和CRC16 校驗原始碼分享

我們在專案中,經常遇到上位機和裝置進行通訊的情況,很多通訊為了保證兩邊通訊不會存在錯誤,所以會引入

各種各樣的校驗。異或校驗和CRC16校驗是其中的兩種。

    異或校驗程式碼如下:

    //異或校驗
        private string xorCheack(string str)
        {
            //獲取s應位元組陣列
            byte[] b = Encoding.ASCII.GetBytes(str);
            // xorResult 存放校驗結注意:初值首元素值
            byte xorResult = b[0];
            // 求xor校驗注意:XOR運算第二元素始
            for (int i = 1; i < b.Length; i++)
            {
                xorResult ^= b[i];
            }
            // 運算xorResultXOR校驗結
           // MessageBox.Show();


            return str + xorResult.ToString("X");
        }

  CRC16 校驗原始碼

//crc16 校驗
        private int crc16_modbus(byte[] modbusdata, int length)
        {
            int i, j;


            int crc = 0xffff;


            for (i = 0; i < length; i++)
            {
                crc ^= modbusdata[i];
                for (j = 0; j < 8; j++)
                {
                    if ((crc & 0x01) == 1)
                    {
                        crc = (crc >> 1) ^ 0xa001;
                    }
                    else
                    {
                        crc >>= 1;
                    }
                }
            }
            return crc;
        }

僅供大家參考,需要大家根據實際情況,再做修改。