`

字符编码(二)校验码

 
阅读更多

 

经典校验码: 奇偶校验码,海明校验码 和 循环冗余校验码(CRC) 

都是对二进制的bit流而言

设原来数据有n位,要加入k位校验码.

        1,奇偶校验码-奇校验码 和 偶校验码 的统称.

                k=1

                奇偶校验码最简单,但只能检测出“奇数”(比如3个,5个)位出错. 无法检测偶数位错误

                奇校验 

                        加上校验位后,编码中1的个数为 奇数个 

                偶校验

                        加上校验位后,编码中1的个数为 偶数个 

                例: 

                        原编码           奇校验           偶校验 

                        0000            0000 1           0000 0 

                        0010           0010 0          0010 1 

 

        2,海明校验码-多重奇偶校验检错码

                可以检测任何位出错,并能纠正1位错误

                必须满足:pow(2,k)-1 >= n+k //pow(2,k) (代表2的k次方) 

 

        3,CRC即 循环冗余校验码--广泛应用于数据通信领域和磁介质存储系统中.

                CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. 

                CRC理论非常复杂,-关键是求“多项式g(x)”

 

                在k位信息码后接r位校验码,对于一个给定的(n,k)码 

                可以证明(数学高手自己琢磨证明过程)存在一个最高次幂为 n-k=r 的多项式g(x) 

 

                根据g(x)可以生成k位信息的校验码,g(x)被称为 生成多项式 

 

                用C(x)=C(k-1)C(k-2)...C0表示k个信息位 

                把C(x)左移r位,就是相当于 C(x)*pow(2,r) 

                给校验位空出r个位来了. 

 

                给定一个 生成多项式g(x),可以求出一个校验位表达式r(x) 

                C(x)*pow(2,r) / g(x) = q(x) + r(x)/g(x) 

 

                用C(x)*pow(2,r)去除生成多项式g(x)商为q(x)余数是r(x) 

                所以有C(x)*pow(2,r) = q(x)*g(x) + r(x) 

 

                在CRC运算过程中,四则运算采用 mod 2运算(后面介绍),即不考虑进位和借位. 

                所以上式等价于C(x)*pow(2,r) + r(x) = q(x)*g(x) 

 

                C(x)*pow(2,r) + r(x)就是所求的n位CRC码,由上式可以看出它是生成多项式g(x)的倍式. 

 

                所以如果用得到的n位CRC码去除g(x)如果余数是0,就证明数据正确. 

                否则可以根据余数知道 出错位 . 

 

 

分享到:
评论

相关推荐

    16进制和ASCII码校验码计算工具

    ASCII(美国标准信息交换代码)是一种基于拉丁字母的一套字符编码,定义了128个不同的字符,包括大写字母、小写字母、数字和一些特殊符号,每个字符都与一个7位的二进制数对应。 校验码计算工具的主要功能是生成和...

    checkcode生成文件_checkcode_校验码_

    在IT领域,校验码(Checkcode)是一种用于验证数据完整性和正确性的工具,它通常由一系列随机或特定算法生成的字符组成。在ASP(Active Server Pages)平台上,开发人员可以利用校验码来防止欺诈行为,如防止重复...

    JAVA验证身份证号码校验码是否正确.zip

    身份证号码是中国公民重要的个人身份标识,它包含了个人的出生日期和地区的编码信息,并且通过一个校验码来确保号码的准确性。在Java编程中,验证身份证号码的校验码是否正确是一项常见的任务,特别是在处理个人信息...

    中文校验码ASP版本

    【标签】中的"中文校验码"是指用于验证中文字符的编码,通常通过计算字符集的某种特定算法得出,如MD5或SHA等。"校验码"则是一个更广泛的术语,指的是用于验证数据完整性和准确性的任意编码。"ASP版中文校验码"特指...

    CR16校验码计算器

    在CR16校验码计算器中,可能用于显示和处理多语言字符集,确保用户界面友好且支持各种字符编码。 2. **CRC16校验码计算器v1.2.exe**:这是主程序文件,运行后可以提供用户界面来输入待校验的数据,并计算出对应的CR...

    浅谈字符编码.pptx

    ### 字符编码概述 字符编码是信息技术领域的一个重要概念,涉及到如何将人类可读的文本转换成计算机能够处理的形式。本文旨在深入探讨字符编码的基本原理及其常见类型,以帮助读者理解不同编码方式的特点和应用场景...

    身份证的校验码 可用源码

    学习和理解这样的源码,不仅可以加深对身份证校验码算法的理解,还能提升编程能力,尤其是对数值计算、字符串处理和异常处理等方面的掌握。同时,通过阅读和分析他人的代码,有助于培养良好的编程习惯,提高代码质量...

    MYSQL校验码

    这里涉及到了字符集和校对规则的更改,这与校验码有间接的关联。字符集定义了如何编码文本数据,而校对规则则决定了如何比较和排序这些数据。当处理多语言或多字符集的数据时,正确的字符集和校对规则设置对于保持...

    CRC16校验码生成工具

    一款CRC16的校验码生成工具,可以自己设置校验码生成多项式...字符串需要输入ASCii码形式,例如:AE 13 4F 78 0C 90 A0 B1,每两个中间要加空格,当校验多项式为8005时的校验码为D9 9F。文件校验的时间与文件大小有关。

    EAN13码校验码编码规则源码

    6. 返回包含校验码的完整EAN13码字符串。 在编程语言如Python中,可以这样实现: ```python def generate_ean13_check_digit(ean12): even_sum = sum(int(digit) * (i % 2 + 1) for i, digit in enumerate(ean12)...

    常用汉字字符编码

    常见的字符编码有ASCII码、Unicode(包括UTF-8、UTF-16等)、GB2312、GBK、GB18030等。 #### 二、汉字编码的重要性 汉字编码对于中文信息处理至关重要。由于汉字数量庞大且结构复杂,合适的编码方案能确保信息的...

    CRC 校验码编码实验.pdf

    CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和...总的来说,CRC校验码编码实验旨在帮助学生熟悉并掌握CRC编码的原理和实现,通过编程实践提高对数据通信中错误检测技术的认识和应用能力。

    CRC 校验码编码实验.docx

    总的来说,CRC校验码编码实验旨在让学生理解和掌握CRC编码的基本流程和原理,通过编程实践加深对CRC编码和解码过程的理解,提高数据通信的可靠性。实验中涉及的编程语言是C++,但也可以使用MATLAB或其他编程工具进行...

    串口实现编码数据的收发,带CRC校验,求和校验和奇偶校验

    CRC通过对数据进行多项式除法生成一个校验码,接收端再用相同算法计算接收到的数据,如果两者的CRC值不匹配,则表示数据可能有误。求和校验则是简单地对所有数据位求和,同样在接收端进行验证,如果和不同则数据有误...

    字符编码(ucs2, unicode, utf8, gb2312)

    在计算机领域中,字符编码是指将文字或符号转换为计算机可以理解和存储的二进制代码的过程。不同的字符编码标准对应着不同的字符集,今天,我们将探讨 UCS2、Unicode、UTF-8 和 GB2312 等通用字符编码标准。 ASCII ...

    随机校验码的生成和使用

    总结来说,"随机校验码的生成和使用"涵盖了随机数生成、编码解码、图形化展示、DLL封装、API调用、校验算法、用户交互、安全性设计以及异常处理等多个方面的IT知识。这个项目不仅可以帮助开发者理解并实践这些技术,...

    EAN-13码、ITF-14码等的校验位计算

    ITF-14码,即交叉二五码(Interleaved Two of Five),通常用于物流和批发环节,它包含14位数字,同样有一个校验位。与EAN-13码不同,ITF-14码的条纹结构更简单,但校验位的计算方式类似。 校验位的计算原则是"偶...

    海明码和CRC校验的C语言实现

    海明码和CRC校验是两种广泛用于数据通信和存储中的错误检测方法。海明码是一种前向纠错编码,能够自动发现和纠正单个比特错误。CRC(Cyclic Redundancy Check,循环冗余校验)则是一种基于多项式除法的校验技术,...

    检验用户名、密码、字符编码、页面缓存----Filter的基本使用

    二、字符编码转换 在处理用户输入时,正确处理字符编码是至关重要的。不同浏览器可能会使用不同的编码格式发送请求,这可能导致乱码问题。Filter可以帮助我们统一处理字符编码,确保所有的请求都按照预期的编码(如...

    crc16_crc编码源程序_

    CRC编码是通过一个特定的数学算法,即生成多项式,对原始数据进行运算,生成一个固定位数的校验码,附加在原始数据后面,用于检查数据在传输或存储过程中是否出错。在本压缩包文件中,主要涉及的是CRC-16编码的实现...

Global site tag (gtag.js) - Google Analytics