精华内容
下载资源
问答
  • labview2016版本,modbus通信协议 CRC-16校验码计算工具。
  • 校验码计算小工具

    2017-10-22 11:26:34
    该工具主要应用于校验码计算,包含异或,校验和8位,校验和16位,生成0xFF的格式,和复制到剪切板,是编程通信协议的好帮手,基于VS2010上编译生成的MFC工具。
  • 计算校验码(C++实训题)

    千次阅读 2020-08-05 21:21:08
    计算校验码 【问题描述】 传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上校验位后能被B-1整除。比如十进制的数值12310,其校验码就是3,因为十进制数值123310能被9整除。16进制的...

    写在前面:仅为个人代码/总结,未必标准,仅供参考!如有错误,还望指出交流,共同进步!

    计算校验码

    【问题描述】
    传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上校验位后能被B-1整除。比如十进制的数值12310,其校验码就是3,因为十进制数值123310能被9整除。16进制的数7816,其校验码为0,因为16进制的78016是15的倍数。超过十进制后,用字母a表示10,字母b表示11,字母c表示12,字母d表示13,字母e表示14,字母f表示15。
    告诉你进制B,以及一个B进制的正整数N,要求你计算正整数N在B进制下的校验码。

    【输入形式】
    输入第一行正整数t (10 ≤ n ≤ 100),表示有多少组测试数据。
    后面有t行,每行两个正整数B,N(2≤ B≤16),中间用一个空格隔开,B是10进制整数,N用B进制形式表示。测试数据保证没有非法的B进制数N(也即N中每一位都是在0到B-1之间,没有前导0)。
    40%的测试数据N的位数L 1 ≤ L≤ 10;
    30%的测试数据N的位数L 1 ≤ L≤ 102;
    20%的测试数据N的位数L 1 ≤ L≤ 103;
    10%的测试数据N的位数L 1 ≤ L≤ 104;

    【输出形式】
    对于每组测试数据,输出一位占一行:正整数N在B进制下的校验码。(如果校验码可以为B-1,也可以为0,输出0)。

    【样例输入】
    4
    10 123
    16 78
    16 1234321
    12 ab

    【样例输出】
    3
    0
    e
    1

    【样例说明】
    第一行的4表示有4组测试数据,下面四行,每行一组测试数据。
    第一组测试数据 10进制数123 最后添加检验码3,10进制数1233是9(=10-1)的倍数
    第二组测试数据 16进制数78 最后添加检验码0,16进制数780是15(=16-1)的倍数
    第三组测试数据 16进制数1234321 最后添加检验码e(=14),16进制数1234321e是15(=16-1)的倍数
    第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1是11(12-1)的倍数

    【Tips】
    B进制的数能被B-1整除,当且仅当各位数字和能被B-1整除。
    第一组测试数据 10进制数123 最后添加检验码3,10进制数1233各位数字和是9,是9的倍数
    第二组测试数据 16进制数78 最后添加检验码0,16进制数780各位数字和是15,是15的倍数
    第三组测试数据 16进制数1234321 最后添加检验码e,16进制数1234321e各位数字和是30,是15的倍数
    第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1各位数字和是22,是11的倍数

    【示例代码】

    #include <bits/stdc++.h>
    using namespace std;
    bool Judge(int B,char N[],int n)//判断一个多位B进制数是否整除B-1
    {
        int num=0,yu=0;
        for(int i=0;i<n;i++)
        {
            if(N[i]<='9')
            {
                num=N[i]-48;
            }
            else
            {
                num=N[i]-87;
            }
            yu=(num*B+yu)%(B-1);
        }
        if(yu==0)
            return true;
        else
            return false;
    }
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            int B;
            char N[10000];
            cin>>B>>N;
            int len=strlen(N);
            char res='\0';
            for(int i=0;i<B;i++)
            {
                if(i<10) {N[len]=i+48;}
                else {N[len]=i+87;}
                bool b=false;
                b=Judge(B,N,len+1);
                if(b==true)
                {
                    if(i<10) {res=i+48;}
                    else
                    {
                        res=i+87;
                    }
                    break;
                }
            }
            cout<<res<<endl;
        }
        return 0;
    }
    
    展开全文
  • 自己编写的用于计算Modbus通信时CRC16校验码的工具。自己用着挺好。
  • 个人思路仅供参考,如有不足欢迎交流。 【问题描述】 传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N...告诉你进制B,以及一个B进制的正整数N,要求你计算正整数N在B进制下的校验码。.

    个人思路仅供参考,如有不足欢迎交流。

    【问题描述】

    传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上校验位后能被B-1整除。比如十进制的数值12310,其校验码就是3,因为十进制数值123310能被9整除。16进制的数7816,其校验码为0,因为16进制的78016是15的倍数。超过十进制后,用字母a表示10,字母b表示11,字母c表示12,字母d表示13,字母e表示14,字母f表示15。

    告诉你进制B,以及一个B进制的正整数N,要求你计算正整数N在B进制下的校验码。

    【输入形式】

    输入第一行正整数t (10 ≤ n ≤ 100),表示有多少组测试数据。

    后面有t行,每行两个正整数B,N(2≤ B≤16),中间用一个空格隔开,B是10进制整数,N用B进制形式表示。测试数据保证没有非法的B进制数N(也即N中每一位都是在0到B-1之间,没有前导0)。

    40%的测试数据N的位数L 1 ≤ L≤ 10;

    30%的测试数据N的位数L 1 ≤ L≤ 10^2;

    20%的测试数据N的位数L 1 ≤ L≤ 10^3;

    10%的测试数据N的位数L 1 ≤ L≤ 10^4;

    【输出形式】

    对于每组测试数据,输出一位占一行:正整数N在B进制下的校验码。(如果校验码可以为B-1,也可以为0,输出0)。

    【样例输入】

    4
    10 123
    16 78
    16 1234321
    12 ab
    

    【样例输出】

    3
    0
    e
    1
    

    【样例说明】

    第一行的4表示有4组测试数据,下面四行,每行一组测试数据。

    第一组测试数据 10进制数123 最后添加检验码3,10进制数1233是9(=10-1)的倍数

    第二组测试数据 16进制数78 最后添加检验码0,16进制数780是15(=16-1)的倍数

    第三组测试数据 16进制数1234321 最后添加检验码e(=14),16进制数1234321e是15(=16-1)的倍数

    第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1是11(12-1)的倍数

    【Tips】

    B进制的数能被B-1整除,当且仅当各位数字和能被B-1整除。

    第一组测试数据 10进制数123 最后添加检验码3,10进制数1233各位数字和是9,是9的倍数

    第二组测试数据 16进制数78 最后添加检验码0,16进制数780各位数字和是15,是15的倍数

    第三组测试数据 16进制数1234321 最后添加检验码e,16进制数1234321e各位数字和是30,是15的倍数

    第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1各位数字和是22,是11的倍数

    【思路和做法】

    由于很多数据中数的长度明显过长,所以采用了从头到尾类似于竖式除法的方式来计算,类似于另一题“A除以B”
    提交代码如下(10/10分,C++):

    //37.校验码
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    bool check(string _num, int base)
    {
        int len = _num.length();      //加上校验码之后数的位数
        int temp = 0, t_num = 0;      //每次除法的被除数、当前位置的数字(t_num和r赋值为0是为了消除警告)
        int r = 0;                    //最后的余数
        for (int i = 0; i < len; i++) //从高位开始,类似于用竖式做除法
        {
            switch (_num[i]) //为当前位置数字赋值
            {
            case '0':
            {
                t_num = 0;
                break;
            }
            case '1':
            {
                t_num = 1;
                break;
            }
            case '2':
            {
                t_num = 2;
                break;
            }
            case '3':
            {
                t_num = 3;
                break;
            }
            case '4':
            {
                t_num = 4;
                break;
            }
            case '5':
            {
                t_num = 5;
                break;
            }
            case '6':
            {
                t_num = 6;
                break;
            }
            case '7':
            {
                t_num = 7;
                break;
            }
            case '8':
            {
                t_num = 8;
                break;
            }
            case '9':
            {
                t_num = 9;
                break;
            }
            case 'a':
            {
                t_num = 10;
                break;
            }
            case 'b':
            {
                t_num = 11;
                break;
            }
            case 'c':
            {
                t_num = 12;
                break;
            }
            case 'd':
            {
                t_num = 13;
                break;
            }
            case 'e':
            {
                t_num = 14;
                break;
            }
            case 'f':
            {
                t_num = 15;
                break;
            }
    
            default:
                break;
            }
            temp = t_num + temp * base; //temp=本位数字+上一位数字*base
    
            if (temp < base && i == 0) //_num的第一位<base,
                continue;
            else
            {
                r = temp % (base - 1); //余数
                temp = r;              //本次计算的余数继承到下一次计算
            }
        }
        if (r == 0) //最后余数为0,即能够整除
        {
            cout << _num[len - 1] << endl; //输出校验码
            return true;                   //找到校验码
        }
        return false; //没有找到校验码
    }
    
    int main()
    {
        int n;            //测试数据有n组
        int base;         //base进制
        string num, _num; //输入的数、加上校验码之后的数
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            cin >> base >> num;
            for (int j = 0; j < base; j++) //校验码j从0到base-1
            {
                switch (j)
                {
                case 0:
                {
                    _num = num + '0';
                    break;
                }
                case 1:
                {
                    _num = num + '1';
                    break;
                }
                case 2:
                {
                    _num = num + '2';
                    break;
                }
                case 3:
                {
                    _num = num + '3';
                    break;
                }
                case 4:
                {
                    _num = num + '4';
                    break;
                }
                case 5:
                {
                    _num = num + '5';
                    break;
                }
                case 6:
                {
                    _num = num + '6';
                    break;
                }
                case 7:
                {
                    _num = num + '7';
                    break;
                }
                case 8:
                {
                    _num = num + '8';
                    break;
                }
                case 9:
                {
                    _num = num + '9';
                    break;
                }
                case 10:
                {
                    _num = num + 'a';
                    break;
                }
                case 11:
                {
                    _num = num + 'b';
                    break;
                }
                case 12:
                {
                    _num = num + 'c';
                    break;
                }
                case 13:
                {
                    _num = num + 'd';
                    break;
                }
                case 14:
                {
                    _num = num + 'e';
                    break;
                }
                case 15:
                {
                    _num = num + 'f';
                    break;
                }
                default:
                    break;
                }
                if (check(_num, base) == true) //获取到校验码
                {
                    break;
                }
            }
        }
        return 0;
    }
    
    展开全文
  • 【问题描述】 传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上...告诉你进制B,以及一个B进制的正整数N,要求你计算正整数N在B进制下的校验码。 【输入形式】 输入第一行正整数t (10

    【问题描述】

    传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上校验位后能被B-1整除。比如十进制的数值12310,其校验码就是3,因为十进制数值123310能被9整除。16进制的数7816,其校验码为0,因为16进制的78016是15的倍数。超过十进制后,用字母a表示10,字母b表示11,字母c表示12,字母d表示13,字母e表示14,字母f表示15。

    告诉你进制B,以及一个B进制的正整数N,要求你计算正整数N在B进制下的校验码。

    【输入形式】

    输入第一行正整数t (10 ≤ n ≤ 100),表示有多少组测试数据。

    后面有t行,每行两个正整数B,N(2≤ B≤16),中间用一个空格隔开,B是10进制整数,N用B进制形式表示。测试数据保证没有非法的B进制数N(也即N中每一位都是在0到B-1之间,没有前导0)。

    40%的测试数据N的位数L 1 ≤ L≤ 10;

    30%的测试数据N的位数L 1 ≤ L≤ 102;

    20%的测试数据N的位数L 1 ≤ L≤ 103;

    10%的测试数据N的位数L 1 ≤ L≤ 104;

    【输出形式】

    对于每组测试数据,输出一位占一行:正整数N在B进制下的校验码。(如果校验码可以为B-1,也可以为0,输出0)。

    【样例输入】

    4
    10 123
    16 78
    16 1234321
    12 ab
    【样例输出】

    3
    0
    e
    1
    【样例说明】

    第一行的4表示有4组测试数据,下面四行,每行一组测试数据。

    第一组测试数据 10进制数123 最后添加检验码3,10进制数1233是9(=10-1)的倍数

    第二组测试数据 16进制数78 最后添加检验码0,16进制数780是15(=16-1)的倍数

    第三组测试数据 16进制数1234321 最后添加检验码e(=14),16进制数1234321e是15(=16-1)的倍数

    第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1是11(12-1)的倍数

    【Tips】

    B进制的数能被B-1整除,当且仅当各位数字和能被B-1整除。

    第一组测试数据 10进制数123 最后添加检验码3,10进制数1233各位数字和是9,是9的倍数

    第二组测试数据 16进制数78 最后添加检验码0,16进制数780各位数字和是15,是15的倍数

    第三组测试数据 16进制数1234321 最后添加检验码e,16进制数1234321e各位数字和是30,是15的倍数

    第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1各位数字和是22,是11的倍数
    这题主要是字母a-f对应转换到10-15考察对ASCII码的记忆
    当然了,这个可以不用记,临时算一下也可以

    #include<iostream>
    #include<cmath>
    using namespace std;
    //	char a='a';	
    //	int b=a-'0';
    //	int c=b-10;
    //	int d=a-'0'-c;
    //	cout<<b<<" "<<c<<" "<<d;
    						//实验用,a对应得到10要经过的计算 	因为记不清ASCII码了。。。 
    						//a-'0'-39即可
    int main(){
    	int n;cin>>n;
    	int x;string y;
    	for(int i=0;i<n;i++){
    		cin>>x>>y;
    		int l=y.length(),t=0;
    		for(int j=0;j<l;j++){
    			if(y[j]>='0'&&y[j]<='9')
    			t+=y[j]-'0';
    			else
    			t+=y[j]-'0'-39;//把字母也变成数字加起来 
    		}
    		int yu=t%(x-1);
    		if(yu!=0)
    		yu=x-yu-1;			//这一步是“加上校验码能被x-1整除”反向求校验码
    		if(yu<10){
    			cout<<yu<<endl;
    		}
    		else{
    			char a=yu+'0'+39;
    			cout<<a<<endl;
    		}		
    	}	
    }
    
    展开全文
  • CRC32/CRC16直接计算校验码,转换出来有十进制,十六进制
  • 校验码计算器

    2018-02-07 15:45:39
    校验码计算器,可计算文件以及文本的MD5值计算,支持SHA1,使用时选择计算类型,并选择文件或输入文本内容,点击 “计算” 按钮完成校验。
  • DLT645协议解析器及modbus CRC和DLT CS校验码计算,支持两种输入格式,带空格和不带空格。默认需要安装微软VS2012发布包。 比如输入FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16,解析出结果如下: [11-05 08:...
  • 计算机校验码分类及原理

    千次阅读 2016-11-06 23:48:55
    由于元件故障和噪声干扰等因素常常导致计算机在处理信息的过程中出现... 在计算机中有三种常见的检验码,分别是:奇偶校验码,海明校验码,循环冗余码 奇偶校验码  这是最简单的校验方式,在信息编码的时候,将字的

    由于元件故障和噪声干扰等因素常常导致计算机在处理信息的过程中出现错误。为了防止信息在传输过程的错误,将信号采用专门的逻辑电路进行编码以检测错误,甚至校正错误。

    通常的方法是在每个字上添加一些校验位,用来确定字中出现错误的位置。

       在计算机中有三种常见的检验码,分别是:奇偶校验码,海明校验码,循环冗余码

    <1>奇偶校验码

         这是最简单的校验方式,在信息编码的时候,将字的最高位作为校验位。需要说明的事奇偶校验也有两种校验方式:奇校验和偶校验。

    奇校验:在最高位添加0或1,使字编码中的“1”的个数为奇数。

    偶校验:在最高位添加0或1,使字编码中的“1”的个数为偶数。

        校验特点:一次能校验更多的数据,效率较高,系统实现也比较简单,检测可靠性有所提高,但仍然不能检测出所有的错误。

    <2> 海明校验码

         海明校验是一种多重校验, 将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错。假设k个数据位设置r个校验位,则应满足:

                ^r>=k+r+1

         校验位分布2^0,2^1,2^2...2^n位上,如下所示(以4位数据位为例):

      

    校验的位置为:


     

    由此可以看出,校验位置的数据分别校验:


     

    接下来采用异或运算得出具体的R的值:

    R1=1,R2=0,R3=0;

    再将值分别填入信息位即可。

     

    <3>循环冗余码

         奇偶校验码作为一种检错码虽然简单,但是漏检率太高。在计算机网络和数据通信中用E得最广泛的检错码,是一种漏检率低得多也便于实现的循环冗余码CRC (Cyclic Redundancy .Code),CRC码又称为多项式码。

        任何一个由二进制数位串组成的代码,都可以惟一地与一个只含有0和1两个系数的多项式建立一一对应的关系。例如,代码1010111对应的多项式为X6+X4+X2+X+1,同样.多项式X5+X3+X2+X+1对应的代码为101111。

        CRC码在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到。 k位要发送的信息位可对应于一个(k-1)次多项式K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由k位信息位后面加上r位冗余位组成的 n=k+r位码字则对应于一个(n-1)次多项式T(X)=Xr·K(X)+R(X)。例如

        信息位:1011001→K(X)=X6+X4+X3+1

        冗余位:1010→R(X)=X3+X

        码字:10110011010→T(X)=X4·K(X)+R(X)

        =X10+X8+X7+X4+X3+X

        由信息位产生冗余位的编码过程,就是已知K(X)求R(X)的过程。在CRC码中可以通过找到一个特定的r次多项式G (X)(其最高项Xr的系数恒为1),然后用Xr·K (X)去除以G(X),得到的余式就是R(X)。特别要强调的是,这些多项式中的"+"都是模2加(也即异或运算);此外,这里的除法用的也是模2除法, 即除法过程中用到的减法是模2减法,它和模2加法的运算规则一样,都是异或运算,这是一种不考虑加法进位和减法借位的运算,即

        0+O=0,0+1=1,1+0=1,1+1=0

        0-0=0,0-1=1,1-0=1,1-1=0

        在进行基于模2运算的多项式除法时,只要部分余数首位为1,便可上商1,否则上商0。然后按模2减法求得余数,该余数不计最高位。当被除数逐位除完时,最后得到比除数少一位的余数。此余数即为冗余位,将其添加在信息位后便构成CRC码字。

        仍以上例中K(X)=X6+X4+X3+1为例(即信息位为1011001),若G(X)=X4+X3+1

    (对应代码11001),取r=4,则X4·K(X)=X10+X8+X7+X4(对应代码为0110010000),其由模2除法求余式R(X)的过程所示如下:

        得到的最后余数为1010,这就是冗余位,对应R(X)=X3+X。

        由于R(X)是Xr·K(X)除以G(X)的余式,那么下列关系式必然满足

        Xr·K(X)=G(X)Q(X)+R(X)

        其中Q(X)为商式。根据模二运算规则R(X)+R(X)=0的特点,可将上式改记为

        [Xr-K(X)+R(X)]/G(X)=Q(X)

        即    T(X)/G(X)=Q(X)

        由此可见,信道上发送的码字多项式T(X)=Xr-K(X)+R(X)。若传输过程无错,则接收方收到的码字也对应于此多项式,也即接收到的码字多项式能被G(X)整除。因而接收端的校验过程就是将接收到的码字多项式除以G(X)的过程。若余式为零则认为传输元差错;若余式不为零则传输有差错。

        例如,前述例子中若码字10110011010经传输后由于受噪声的干扰,在接收端变成为10110011100,则求余式的除法如下:

    求得的余式不为零,相当于在码字上面半加上了差错模式00000000110。差错模式对应的多项式记为E(X),上例中E(X)=X2+X。有差错时,接收端收到的不再是T(X),而是T(X)与E(X)之模二加,即

        [T(X)+E(X)]/G(X)=T(X)/G(X)+E(X)/G(X)

    若E(X)/G(X)=0,则这种差错就能检测出来;若E(X)/G(X)=0,那么由于接收到的码字多项式仍然可被G(X)整除,错误就检测不出来,也即发生了漏检。

        理论上可以证明循环冗余校验码的检错能力有以下特点:

        (1)可检测出所有奇数位错。

        (2)可检测出所有双比特的错。

        (3)可检测出所有小于、等于校验位长度的突发错。

        CRC码是由r-K(X)除以某个选定的多项式后产生的,所以该多现式称生成多项式。一般来说,生成多项式位数越多校验能力越强。但并不是任何一个r+1位的二进制数都可以做生成多项式。目前广泛使用的生成多项式主要有以下四种:

        (1)CRC12=X12+X11+X3+X2+1

        (2)CRC16=X16+X15+X2+1(IBM公司)

        (3)CRC16=X16+X12+X5+1(CCITT)

        (4)CRC32=X32+X26+X23+X22+X16+X11+X10+X8+X7+X5+X4+X2+X+1


    展开全文
  • CRC校验码labview指令

    2018-04-21 10:29:37
    串口通讯需要CRC校验码,labview代码自动根据前面代码计算CRC校验码,得到完整的串口通讯指令
  • 校验码计算

    2018-07-17 14:40:38
    该程序专门用于计算机232通讯中字符的和校验和异或校验
  • 串口通讯CRC计算校验工具,便于工程调试,本工具用来计算CRC校验,可以计算接收到的校验码是否正确。在最下面输入字节,直接计算。
  • 支持CRC16(1个表和2个表),亦或校验,MD5校验
  • CRC校验码计算器

    2017-03-19 20:22:38
    CRC校验码计算工具(8位,16位,32位均可计算
  • 计算机组成原理里面的海明校验码,有详细的步骤过程。可以使学习者更加方便快捷计算机组成原理里面的海明校验码,有详细的步骤过程。可以使学习者更加方便快捷计算机组成原理里面的海明校验码,有详细的步骤过程。...
  • 软件介绍: 在485通讯时做校验码可以用到的三菱PLC运算CRC校验码的程序
  • 1.CRC-16/MODBUS(最通用) 2.CRC-16/CCITT-FALSE 支持以上CRC校验计算方式(分查表法和计算法),原代码可执行,能正确输出结果。需要的朋友可以直接 引用到自己项目中。谢谢支持。
  • 条码校验计算工具

    2019-04-22 11:01:55
    条码校验计算工具,推荐这款条码校验计算工具,个人亲测还可以,默认要5个积分,不好意思,现在csdn都是这样,积分少的可以通过网盘免费下载链接:https://pan.baidu.com/s/1nIJIjsahS96Z2BGOuqiHeA 提取:d4...
  • MODBUS校验码计算

    2016-01-26 14:45:42
    MODBUS校验码计算,生成带有校验码的数据
  • 用 C# 做的操作文件的小工具 FileMan [CRC32 E71B08A3].exe 可用正则表达式 改名(批量)、搜索、计算校验码(批量 + 可将校验码加入文件名)、修改文件时间(批量)
  • CRC校验码计算小工具

    2017-04-18 00:30:26
    *本程序是为MODBUS协议而写的,所以最后是两位CRC检验,高位在后,低位在前。 *使用十分的方便。
  • 16进制和ASCII码校验码计算工具,直接输入和计算,包含所有模式,可在软件界面下方选择
  • 奇偶校验码 奇偶校验码的定义 奇偶校验码也是一种校验码,它用来检测数据传输过程中是否发生错误,是众多校验码中最为简单的一种。 顾名思义,它有两种校验方法:奇校验和偶校验 奇校验:原始码流+校验位 总共有奇数...
  • 本例提供了CRC校验码计算与判断函数,从CRC4到CRC16任意计算,生成多项式由一个整数表示,可以自由定制。
  • VIN码(车架号)校验码计算与检测宏。 生成车辆车架号(VIN)中第9位上的校验码,也可用于检验你得到的VIN码的正确性。用VBA宏代码写成Excel函数,在一个单元格中输入VIN码,像普通的Excel公式拖拽一样,直接拖出其...
  • java计算CRC16校验码

    2020-10-27 14:56:50
    java计算校验和的一个公式,亲测可行有效 /** * 计算CRC16校验码 * * @param data 需要校验的字符串 * @return 校验码 */ public static String getCRC(String data) { data = data.replace(" ", "");...
  • 怎么计算crc16校验数据的校验码

    万次阅读 多人点赞 2018-10-25 10:54:51
    第一、CRC-16校验码计算方法: 常用查表法和计算法。计算方法一般都是: (1)、预置1个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器; (2)、把第一个8位二进制数据(既通讯信息帧的第一个字节...
  • modbus CRC校验计算工具

    2017-07-26 09:40:37
    modbus 通信时进行CRC校验码计算
  • CRC校验码计算

    千次阅读 2021-04-30 16:15:41
    Step1:原始信息后“添0”。 假定生成多项式G(x)阶为r,则在原始信息为后添加r个0,新生成的信息串共m+r位,对应多形式设定为x^rM(x)。 以G(X)=X^4+X+1为例。 G(X)=1X^4+0* X^3+ 0X^2+ 1X+1*X0,所以生成的对应的二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,070
精华内容 56,028
关键字:

如何计算校验码