编码的简单总结

说明

字符及网络上常用编码

编码 目的 前缀或特点 编码形式 常见或特殊记忆
url编码 对ascii中的一些可打印字符进行编码 前缀% 以%为前缀,其后是字符的两16进制的ascii码 %20空格 %00空字节 %25百分号 +也代表url的空格
html编码 为在html文档中安全的使用某些字符 &或&#或&#x 后跟字符10进制的ascii码,&#x为前缀,后跟字符的16进制的ascii码 "为&quot或&#34或&#x22 >为&gt <为&lt
16进制编码 对二进制数据进行16进制编码
base64 对二进制数据进行编码,用来将非ASCII字符的数据转换成ASCII字符 末尾经常出现= 大写字母A~Z,小写字母a~z,数字0~9以及"+","/"及用来填充的=
base32 对二进制数据进行编码,用来将非ASCII字符的数据转换成ASCII字符 末尾经常出现= 大写字母A~Z和数字2~7及用来填充的=
base16 对二进制数据进行编码,用来将非ASCII字符的数据转换成ASCII字符 数字0~9和字母A~F
unicode 对世界所有的字符编码 U+ 用四个字节为每个字符进行编码,一般用16进制字符表示
utf8 把unicode字符进行编码,便于存储传输的编码方式 % 使用一至四个字节为每个字符编码
utf16 把unicode字符进行编码,便于存储传输的编码方式 %u 使用二或四个字节为每个字符编码
utf32 把unicode字符进行编码,便于存储传输的编码方式 %u 使用四个字节为每个字符编码
ascii码 对键盘的128个字符编码 使用7位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符
gbk 对中文字符编码 使用两个字节编码
bcd码 对二进制数据进行编码 用4位二进制数来表示一位十进制数中的0~9十个数码,有8421码,2421码,余3循环码等方式

数字信号编码

非归零编码NRE——高低电平分别用0和1表示

曼彻斯特编码——从高电平跳到低电平表示0,从低电平跳到高电平表示1

差分曼彻斯特编码——每一位中间有跳变,用来表示时钟,每一位开始时有跳变表示0,无表示1

其它常见编码

霍夫曼编码

用于压缩,MP3编码等
简单的二元霍夫曼编码过程如下

所以e的编码为1,c的编码为01,f的编码为000,h的编码为001

费诺编码

简单的二元费诺编码过程如下,不断分为概率相近的两组

游程编码

用于卫星,医学图像等的编码,利用游程,例如图像像素为
3333
4333
2211
1111
灰度:3,4,3,2,1,1
长度:4,1,3,2,2,4
灰度用两位,长度用两位为1011,1100,1010,0101,0001,0011

差错控制码

奇偶校验码

增加一位奇(偶)校验位并一起存储或传送
比如:1111000中1位偶数添加一位为0表示1的位数为偶数,变为11110000,如果传输过程中发生了错误变为10110000,那么就可以知道有一位发生了错误。如果偶数个位错误,是无法发现的

循环冗余码crc

一个k位的二进制数据,左移r位,除以一个给定的r+1位的多项式相除,得到的r位余数就为校验码,拼到k位的二进制数后面
只要将接受到的数据和校验位用约定好的同样的生成多项式除,如果能除尽,表明没有发生错误(不一定,也有可能错误);若除不尽,则表明某些数据位发生了错误
如信息码为1100,生成多项式为\(x^{3}+x+1\)
则1100平移3位1100000 除以1011,余数为010,拼在1100后面为1100010

海明校验码

能够纠正一位错误或者检测两位错误并纠一正位错误
设信息码为k位,校验码为r位,海明码为k+r位
如果能够纠正一位错则应满足\(2^{r}-1\geq k+r\)
如果能够发现两位错并纠正一位错则应满足\(2^{r-1}\geq k+r\)
编码规律为

  • 每个校验位\(p_{i}\)放在海明码中位号为\(2^{i-1}\)的位置
  • 海明码的每一位(数据位和校验位)由多个校验位进行校验:被校验位的位号=校验位位号之和

例如求01101110的海明码,使其能纠正一位错误
一 确定校验位数
\(2^{4}-1\geq 8+4\) 所以r为4
二 确定校验位所在位置
\(2^{1-1}\),\(2^{2-1}\),\(2^{3-1}\),\(2^{4-1}\)所以海明码的1,2,4,8为校验位
三 分组

四 确定校验位
每一组除本身校验位外,所有位异或,如第一组为\({D}_{7} \oplus{D}_{6} \oplus{D}_{4} \oplus{D}_{3} \oplus{D}_{1}={1}\)
四个校验码分别为1101,所以海明码为110011011110
五 校验
将每一组与本组的校验位异或,即\({P}_{1} \oplus{D}_{7} \oplus{D}_{6} \oplus{D}_{4} \oplus{D}_{3} \oplus{D}_{1}\),如果校验位都为0,则无错,如果有错,校验位二进制编码即为出错位号,如,如果校验位为1010,则第第10位错,即\({D}_{2}\)出错

原文地址:https://www.cnblogs.com/Qi-Lin/p/12230019.html

时间: 2024-11-07 05:32:37

编码的简单总结的相关文章

MPEG2与MPEG4在视频编码的简单比较

1 MPEG-2技术 MPEG-2的初衷是为广播级电视质量(CCIR601格式)的视音频信号定义的压缩编码标准,但最终结果是成为了一个通用的标准,能在很大范围内对不同分辨率和不同输出比特率的图像信号进行有效编码. MPEG-2的编码技术主要基于两个概念:即时间相关性与空间相关性.所谓时间相关性指的是物体前后运动的连续性,例如,一扇门的开启不可能是开关 两个状态,而一定是关.微开.开等一系列的连续动作,因此利用前一次的动作可以预测下一次的动作:空间相关性指的是空间内相邻物体的色彩和亮度是一个渐变

编码的简单应用之操作文件

通过字符串搜索含有该字符串的文件本来应该事件很简单的事情,不过下面写的不过是多此一举的事情也是为了能了解一下文件的字节流,了解文件的编码方式写了点代码,感觉很普通 package com.gdin.dome; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream;

常用编码软件简单使用记录 1 : 自主编码器

用于转码或者编码的软件很多.但是实际上编码器的数量是是相对比较少的.很多编码软件都算是编码器的GUI.它们外观不同,但是实际上都调用了同样的编码器.比如说一般情况下编码H.264的时候都调用了x264.这类软件很多,比如格式工厂,狸窝视频转换器,MediaCoder,TMPGEnc,HandBrake等等.而有一些公司的编码软件是使用自己的编码器的.这些公司规模较大,因而有足够的资源自己开发编码器.比如Mainconcept,Divx,Elecard,Intel.最近在做转码方面的研究,简单记录

常用编码软件简单使用记录 2 : 非自主编码器

上一篇文章记录了记录自主生产编码器的厂商的编码软件,包括Mainconcept,Divx,Elecard.本文记录一下不使用自主生产编码器的软件. 不使用自主生产编码器的软件比较常见.这类软件实际上是一个配置各种命令行编码器的图形界面(毕竟命令行界面只有少数人会,而图形界面大部分人都会),从而使命令行编码软件使用起来更方便.不再详细叙述,仅简要记录一下自己的使用过程. (1) 格式工厂 官方网站:http://www.pcfreetime.com/   格式工厂是当今使用最为广泛的转码软件.它在

字符编码知识简介和iconv函数的简单使用

字符编码知识简介和iconv函数的简单使用 字符编码知识简介 我们知道,在计算机的世界其实只有0和1.期初计算机主要用于科学计算,而我们知道一个数,除了用我们常用对10进制表示,也可以用2进制表示,所以只有0和1就可以进行科学计算,但是为了便于计算,大神们还是向计算机中引入的编码,比如通常我们用补码表示一个负数.所以编码这个东西,是从一开始就伴随着计算机的.到现在,我们的生活已经完全离不开计算机了,计算机也不仅仅用于科学计算了,更多地应用系信息处理.那计算机怎样表示与我们生活息息相关的事物呢,一

数据可视化分析除了需要编码的Python,还有更简单的方式吗?

大数据.数据分析的兴起和火爆,也带动了数据可视化的广泛应用.说起数据分析和可视化的关系,就好比你为一堆散乱的拼图写了一份说明,告诉他这个数据是什么样子,代表什么.可以说,数据可视化虽然不是必不可少的,但却是可以加快效率,为报告锦上添花的.今天,说起数据可视化,我们就不得不谈一下数据可视化工具了.主要说到的这个工具也是最近在数据分析圈比较受追捧的一个软件--Python. 数据可视化分析除了需要编码的Python,还有更简单的方式吗?Python虽好,但是需要编程才能实现数据的可视化,编程对于用户

&lt;转&gt;字符编码笔记:ASCII,Unicode和UTF-8

本文转自:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚. 下面就是我的笔记,主要用来整理自己的思路.但是,我尽量试图写得通俗易懂,希望能对其他朋友有用.毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识. 1. ASC

字符编码笔记:ASCII,Unicode和UTF-8(转载)

作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚. 下面就是我的笔记,主要用来整理自己的思路.但是,我尽量试图写得通俗易懂,希望能对其他朋友有用.毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)

字符编码笔记:ASCII,Unicode和UTF-8

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去.他们看到这样是好的,于是它们就这机器称为"计算机". 开始计算机只在美国用.八位的字节一共可以组合出256(2的8次方)种不同的状态. 他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端.打印机遇上约