首页 > 其他分享 >编码

编码

时间:2024-07-02 23:54:22浏览次数:7  
标签:编码 字节 字符 字符集 编码方式 ASCII

编码的概念,常用的几种编码原理和使用区分。

一、计算机编码

计算机编码: 在计算机中,数据都是基于二进制的方式存储。一个二进制位表示一个计算机位,同时用一个字节表示8个位。因此位(bit)、字节(byte)、KB、MB、GB等均是存储空间单位,表示可存储二进制数据。因此编码则表示对于文字、字母、符号如何以二进制的形式存储在计算机中。

  我们将文字、字母、符号统称为字符,因此引入计算机编码后可以使用字符与计算机进行交互,而不用使用二进制数据。那么整个过程可以体现为输入字符-->编码成二进制-->计算机存储二进制-->计算机取出二进制进行解码-->展示对应字符,日常使用时编码、解码对用户透明,所以表现为可以使用字符直接与计算机交互。

二、字符集

字符集: 各个国家和不同应用领域使用的字符都是不相同的,因此就产生了各种各样的字符集。所以字符集即多个字符的集合,不同的字符集字符个数也不相同。常见的字符集有ASCII字符集、ISO 8859字符集、GB2312字符集、Unicode字符集等。

ASCII字符集
  ASCII即美国信息交换标准代码,基于拉丁字母,主要用于显示现代英语和其他西欧语言,是最通用的信息交换标准。标准的ASCII字符集包括128个字符,其中有32个通用控制符、10个十进制数码、52个英文大小写字母和34个专用符号。扩展的ASCII字符集多加了128个字符,其中有特殊符号字符、外来语字母和图形符号。

ISO 8859字符集
  ISO 8859字符是国际标准化组织及国际电工委员会联合制定的一系列字符集的标准,它在ASCII字符集的基础上扩展了不同的字符和符号,这一系列的字符集中每个字符集都收录欧洲某地区的共同常用字符。

GB2312字符集
  GB2312字符集是中国国家标准简体中文字符集,由中国国家标准总局发布。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。该字符集共收录6763个汉字,其中一级汉字3755个,二级汉字3008个。同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符。因此基本满足了汉字的计算机处理需要。而对于比较罕见的人名、古汉字后来又引入了GBK字符集,其向下与GB 2312完全兼容,向上支持ISO 10646国际标准,起到承上启下的作用。

Unicode字符集
  随着字符集的越来越多,各种编码的不兼容,相互之间的通信可能因为编码的不同而导致对方看到乱码。而Unicode字符集是对世界上大部分的文字系统进行了整理,其目的就是提供统一的字符集,使得各个平台、语言能够兼容使用,也逐渐成为一个统一的标准。

三、字符编码

字符编码:字符集表示特定的字符集合,而这些字符需要转换为二进制数才能供计算机使用。因此字符编码就是以二进制数字对字符进行编码,使得计算机能够识别和存储各种文字。字符编码通常决定字符要转换的二进制位数以及每个字符的特定转换值。对于同一个字符集也可以有不同的编码方式,如Unicode字符集根据不同需求有UTF-8、UTF-16、UTF-32等编码方式。

ASCII编码
  ASCII码使用8位即一个字节进行编码,因此最多可表示256个字符。标准的ASCII码取值范围是0-127,而扩展的ASCII码则使用了128-255的范围值。

GB2312编码、GBK编码、GB18030编码
  GB2312字符集包含了汉字、字母以及原来ASCII字符集内容,因此GB2312编码使用的是16位即两字节的编码才能表示这些字符。GBK编码方式包含了GB2312编码方式,同时规定了只要第一个字节大于127就是汉字,放宽了对低字节的取值限制,可以表示的范围更大。后来由于要添加不同少数民族的文字,出现了GB18030编码方式,该编码方式通过区分单、双、四字节三个部分来扩展字符表示。

Unicode编码
  Unicode编码方式规定用16位来统一表示所有字符。且其保持着ASCII字符集中的编码原值,因此对于ASCII字符集中字符,使用Unicode方式编码会存在8位的未使用空间。

UTF-8、UTF-16
  UTF-8是Unicode字符集的一种编码方式,是专门为传输设计的一种编码方式。且UTF-8是一种变长的编码方式,内部可以使用1-4字节来表示一个字符,根据不同的字符其编码的长度也不相同,如对于原ASCII字符集中字符用一个字节表示,而对于汉字则用三个字节表示。UTF-8编码方式是从Unicode编码方式转换而来,对于单字节符号其码值和ASCII码一样,而对于n字节的符号,第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。UTF-16则是Unicode字符集的一种16位编码方式,用一个或者两个16位来表示一个字符,因此大部分字符都可以以16位存储,但是其不兼容ASCII编码,且传输时要规定字节序。

Base64编码
  就是选出64个字符,包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。因此Base64编码可以将二进制数据编码成ASCII字符,这样图片就可以以字符文本的形式存储。Base64转换过程中首先以每三个字节为一组即24位一组。对于每一个24位组又继续分为4个6位的组,然后每个6位的小组前面添加00。因此每一个大组变为32位,每一个小组变为8位,对每个小组进行编码最后就可以得到编码结果。可以发现经过Base64编码后理论上字符串比原来长1/3。

标签:编码,字节,字符,字符集,编码方式,ASCII
From: https://www.cnblogs.com/idempotent/p/12565004.html

相关文章

  • MIMO系统基于STBC编码在瑞利信道下的误比特率分析
    目录目录............................................................1摘要...........................................................1第一章绪论.....................................................21.1  对课题的认识与理解...........................
  • 编码格式UTF8下中文长度
    首先理解一下基本概念,字符:一种符号,ABCD,中文,都是文字符号,所以叫字符字节:Byte简写B,跟字节跳动ByteDance一个东西。计算机的基本存储单位二进制位:bit(BinaryDigits)简写b,是比特币BitCoin的bit一个东西,计算机最小传输单位---0/1三者对应关系如下表:字符一个中文或标点一个......
  • ros2 - slam - 直流电机-编码器脉冲测量与校准
    这一节我们编写代码来尝试下是否能够读取到电机上编码器的脉冲数,并通过实验测试出小车的输出轴转速和编码器脉冲的比值。一、新建工程并导入开源库新建example25_encoder添加依赖[env:featheresp32];这是一个环境配置标签,指定了代码将运行的硬件平台和框架platform=esp......
  • ros2 - slam - 使用编码器测量轮子最大速度
    新建example26_max_speed_measurement 添加依赖[env:featheresp32];这是一个环境配置标签,指定了代码将运行的硬件平台和框架platform=espressif32;指定了使用的平台为Espressif32board=featheresp32;指定使用的硬件板为FeatherESP32framework=arduino;......
  • ros2 - slam - 编码器测速原理
    上节做完小车,遥控时小车前进时你应该会发现,小车很难走一条直线,但明明我们给到两个电机的PWM占空比都是相同的,原因在于每一个电机的硬件参数并不能完全的保证一致,所以当我们采用开环控制时,即使我们给到每个电机相同的电压,也不能让两个电机保持相同的转速。要解决这个问题我们就要......
  • 【Hex编码】
    Hex编码是一种将数据转换为十六进制形式的方法。每个十六进制字符表示4个二进制位。它常用于显示二进制文件的内容,使其更易于阅读和传输。Hex编码的转换规则如下:将数据拆分为每4位一组的二进制数。将每组二进制数转换为十六进制字符。例如,将文本字符串"hello"转换为Hex编......
  • x264 编码器x264.h文件中结构体详细介绍
    x264_picture_t定义:在x264.h文件中定义typedefstructx264_picture_t{/*In:forcepicturetype(ifnotauto)*Ifx264encodingparametersareviolatedintheforcingofpicturetypes,*x264willcorrecttheinputpicture......
  • JAVA编码规约
    一、编程规约(一)命名规约1.【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例: name/__name/$Object/name /name$/Object$2.【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确......
  • 机器翻译及实践 初级版:含注意力机制的编码器—解码器模型
    机器翻译及实践初级版:含注意力机制的编码器—解码器模型前言一、什么是机器翻译?二、所需要的前置知识(一).Seq2Seq1.什么是Seq2Seq2.机器翻译为什么要用Seq2Seq3.如何使用Seq2Seq3.1编码器的实现3.2解码器的实现3.3训练模型(二).注意力机制1.什么是注意力机制2.机器翻译为......
  • Golang:go-querystring将struct编码为URL查询参数的库
    Golang:go-querystring将struct编码为URL查询参数的库原创 吃个大西瓜 CodingBigTree 2024-05-0908:30 北京go-querystringisaGolibraryforencodingstructsintoURLqueryparameters.译文:go-querystring将struct编码为URL查询参数的Golang库文档ht......