在进行CRC校验时,首先要知道自己使用的CRC参数模型,不同的CRC参数模型其多项式,初始值和结果异或值不同。

可以在网站http://www.ip33.com/crc.html进行查询

public Crc16() : base(0x8005, 0xFFFF, 0x0000, true, true)
            {

            }

使用CrcDotNET进行CRC校验

使用Nuget下载CrcDotNET库,并根据范例写程序即可

using Crc;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {     
        public Form1()
        {
            InitializeComponent();          
        }
        class Crc16 : Crc16Base
        {
            public Crc16() : base(0x8005, 0xFFFF, 0x0000, true, true)
            {

            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                Crc16 crc = new Crc16();
                byte[] bytes = Encoding.ASCII.GetBytes(textBox3 .Text );
                byte[] resultBytes = crc.ComputeHash(bytes);
                UInt16 resultNum = BitConverter.ToUInt16(resultBytes, 0);
                textBox2.Text = string .Format ("{0:X}",resultNum );
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }            
        }      
    }   
}

 

相关文章: