`

字符编码(二)校验码

 
阅读更多

 

经典校验码: 奇偶校验码,海明校验码 和 循环冗余校验码(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,就证明数据正确. 

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

 

 

分享到:
评论

相关推荐

    CRC16校验码生成工具

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

    常用汉字字符编码

    本人整理的常用汉字字符,可以用作中文校验码的字库。

    安防资质证防伪编码规则2016.jpg

    防伪编码为20位,除首位版本号外剩余部分代码由十九位的数字0-9或大写英文字母A-F组成。全部20位防伪编码由五个部分组成: 第一部分(第1位)首位字符为...第五部分(第20位)共1位字符,为校验码(数字或大写英文字母)

    各种字符编码详解.doc

    说到字符编码,不得不说ASCII码的简史。计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的事,例如文本处理。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表...

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

    发送端通过液晶触摸屏输入字符,然后编写协议发送,采用4.3寸液晶 接收端将接收到的数据解码,然后将有效字符显示在液晶上,采用2.8寸液晶 接收无误码,使用于各种数字无线收发的应用

    详解mysql中的字符集和校验规则

     latin字符集一共可以保存256个字符,相比ASCII码,它又包含了128个西欧常用字符。 GB2312字符集  它包含了中文汉字、拉丁字符、希腊字符等,其中汉字占了大多数,有6763个,其他文字符号638个,而且它兼容ASCII...

    crc16_crc编码源程序_

    按照生成多项式完成crc-16的编码,matlab、simulation

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

    NULL 博文链接:https://931360439-qq-com.iteye.com/blog/962381

    C#-字符串操作类

    、指定字符串分割字符串、指定字符串位置获取字符串、过滤SQL中非法字符、检查SQL语句中是否有非法关键字、随机字符串生成、唯一字符串生成、随机数字生成、唯一数字串生成、去除HTML标签、判断是否整型、判断是否...

    字符串文件http密码资源文件openoffice图片等工具等

    Assert提供对数组、集合、字符串的合法校验静态方法 BeanHelper提供了bean类与map的互相转换 PropertiesUtil实现对properties文件的读与写,参数文件名不包括.properties SysConfig实现对指定系统资源文件(config/...

    条形码-EAN13码编码规则1

    1. 【左侧空白区】 2. 【前置码】 3. 【起始符】 4. 【左侧数据符】 5. 【国家代码】 6. 【中间分隔符】 7. 【右侧数据符】 8. 【校验符】

    海明码的计算及校验 C实现

    程序使用dev++编译,使用VC++编译可能会报错。 1、生成汉明编码 ...2、汉明编码的校验 输入:任意一个经过汉明编码的结果 输出:若无错误,可输出“无错误”之类的提示;若有错误,纠正并输出。

    哈夫曼压缩与解压缩设计

    这里采用哈夫曼编码方式来对每个字符重新编码,因为哈夫曼树具有最小带权路径长度的性质,能够生成用于压缩的二进制前缀码。程序使用的 “静态统计模型”,也就是说在编码前统计要编码的信息中所有字符的出现频率,...

    CheckSum CRC校验具

    CommCheckSum校验工具是一款通用的循环冗余校验码CRC(Cyclic Redundancy Check)、MD5、SHA1、SHA2、SHA3、HAVAL、SHAKE、TIGER、BLAKE、RIPEMD、GOST等算法Hash校验的专业工具软件。 CRC校验支持:CRC3、CRC4、...

    二维码编码解码器源码

    条形码的标准有ENA条形码、UPC条形码、二五条形码、交叉二五条形码、库德巴条形码、三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码。EAN商品条形码亦称通用商品条形码,由国际物品编码协会制定,...

    物流条形码国标集合【无水印】

    GBT 1836-1997 集装箱代码、识别和标记 ...GBT 17710-1999 数据处理 校验码系统 GBT 18127-2009 商品条码 物流单元编码与条码表示-SSCC GBT 18284-2000 快速响应矩阵码 GBT 26934-2011 集装箱电子标签技术规范

    二维码编码解码器源码20130905

    条形码的标准有ENA条形码、UPC条形码、二五条形码、交叉二五条形码、库德巴条形码、三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码。EAN商品条形码亦称通用商品条形码,由国际物品编码协会制定,...

    java完整性校验解决方案

    这是一十六进制的编码字符串,又称“数字指纹”。他其实就是对原版文件(发送方发送的文件)完整性的验证标识符。当我们把文件下到本地后,可以自己对其进行验证,若验证的结果与发送方提供的指纹一致的话,则表明,在...

    循环码、霍夫曼码编译码和性能分析的可视化设计GUI

    本设计使用GUI的可视化设计,可对输入的信息进行循环编码,对输入的码字也可进行校验,在性能分析上,可以任意设置循环码的类型及信道干扰的强度,最后画出未编码、循环编码、循环编码加突发干扰、循环交织、循环...

    python检查字符串是否是正确ISBN的方法

    本文实例讲述了python检查字符串是否是正确ISBN的方法。分享给大家供大家参考。具体实现方法如下: def isISBN(isbn): """Checks if the passed string is a valid ISBN number.""" if len(isbn) != 10 or not ...

Global site tag (gtag.js) - Google Analytics