首页 > 其他分享 >常用编码格式介绍

常用编码格式介绍

时间:2023-10-13 10:58:50浏览次数:23  
标签:编码 常用 0000 字节 字符 UTF 10xxxxxx 格式

常用编码格式介绍

 

编程过程中经常会遇到各类字符的编码方式,经常会混淆,在此总结下常用的编码方式以及其原理。

Ascii:

  因为对于计算机来说只能识别0、1这两种字符(0表示低电平,1表示高电平),所有的数据都是通过二进制来表示,对于其他的比如说3、4、s、z、#等字符用二进制表示就需要一个约定的规范,这就是ascii的由来。

  Ascii码表是用1个字节来表示128种字符(一个字节8位,可以组成256种字符,首位默认为0,所以ASCII最多就128个字符,当首位为1的时候我们后面再讨论),其中0-31和127表示控制字符,他们是不可见字符。

  32-126是可见字符,48-57表示0-9,65-90为26个大写英文字母,97-122是26个小写英文字母。

 

GBK:

  现在英文和数字都有了,但是我们中国汉字怎么表示呢?此时GBK应运而生,上面我们得知ASCII首位为0,假如把它改成1,就表示中文。GBK由2个字节来表示,第一个字节的最高位是0则表示字母和数字,假如是1则表示中文。

 

Unicode:

  Unicode则是收录了世界上所有的语言, 但是在运用过程种会出现很多问题,比如一个3个字节的字符,如何区分他是1个unicode还是3个asicii,还有假如使用unicode,英文字母高位都会设置成0,这就造成了很大的浪费。因此UTF-8、UTF-16、UTF-32就出现来解决这些问题,主要讲当前互联网上常用的UTF-8

UTF-8:

  UTF-8的规则很简单就两条:

  1、 对于单字节的字符,最高位为0,其实跟ascii表示一致

  2、 对于n个字节的字符,第一个字节的最高位为n个1,第n+1设为0,后面每个字节的前两位都为10,剩下的用字符对应的unicode来表示,如下图

  Unicode符号范围 | UTF-8编码方式
  (十六进制) | (二进制)
  --------------------+---------------------------------------------
  0000 0000-0000 007F | 0xxxxxxx
  0000 0080-0000 07FF | 110xxxxx 10xxxxxx
  0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
  0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

 

BCD:

  BCD编码主要用于数字0-9的压缩,因为0-9二进制表示为0000 0000到0000 1001,它们的前4位都是0,把他们合并就生成一个新的字符。

比如2个字符’1’,’9’,他们对应的Ascii为0x31和0x39,因此表示形式则为2个字节0x31 0x39

假如用BCD格式来表示则将其数字对应的二进制前4位去掉,然后合并,即将00000001和00001001前4位去掉得到0001 1001,得到新的1个字节0x19,这样看起来就跟十进制一样,这就是BCD压缩码的原理。

 

Base64编码:

  Base64编码的作用是将ascii里面的不可见字符变成可见字符来传输。Base64编码的最小使用单元是4个字节,每个字节使用6位,假如不足6的整数倍,则后面补0,剩下的字符补=,因为计算机存储字节是8位,所以计算字符值时在前面补2个0。

 可能说的有些绕,看下一张图就了解了

(借用网上的一张图片 http://www.cnblogs.com/caoyc/p/5794720.html)

以A为例补位之后第一个字节为010000,前面补0得到00010000,对应10进制为16,对照字符表得到Q,第二个字节一样,也是Q,然后base64编码最小是4个字节,后面两个字节补=,最终得到QQ==

 

 

下面是一个Base64字符集,它包含大写字母、小写字母和数字,以及“+”和“/”符号。

 

标签:编码,常用,0000,字节,字符,UTF,10xxxxxx,格式
From: https://www.cnblogs.com/sexintercourse/p/17761550.html

相关文章

  • 使用 Open XML SDK 实现 html 富文本转换为 docx 格式示例
     使用OpenXMLSDK实现html富文本转换为docx格式文档相对复杂。下面是一个示例。手动检测<strong>和<em>标签并应用相应的文本格式。usingSystem;usingDocumentFormat.OpenXml;usingDocumentFormat.OpenXml.Packaging;usingDocumentFormat.OpenXml.Wordproces......
  • 总结数组中常用的方法
    //改变原数组数组名.push(数据),返回数组的长度数组名.pop(),返回删除的那个数据数组名.unshift(数据),返回数组的长度数组名.shift(),返回删除掉的那个数据数组名.reverse(),返回翻转好的数组数组名.sort()会按照位排序,比如1,11,2;字符串会按照AscII码顺序单个比较字符数组名.sort(fu......
  • 转换日期数据的格式函数(hive)
    1、转换成标准格式--from_unixtime和unix_timestamp--默认情况下转成yyyy-MM-dd:HH:mm:ssselectfrom_unixtime(unix_timestamp('16/08/2018','dd/MM/yyyy'));2、原文件字段含有英文--月份英文selectfrom_unixtime(unix_timestamp('16/Aug/2018','dd/MMM/yyyy'......
  • Allegro中常见的文件格式
    .brd工具:PCBDesignExpert  PCB布线.ddb      工具:Protel.art 工具:CAM350 AllegroPCBDesignfile/impotARTwork.d     工具:pads2005.drl    工具:Protel.opj    设计项目工程.olb    创建新的元件库  CadenceSPB15.5整个软件......
  • VS格式化(自动对齐)快捷键
    VS格式化(自动对齐)快捷键全部代码对齐:法一:1.Ctrl+K2.Ctrl+D     法二:Ctrl+K+D(三个键同时按下)  法三:1.Ctrl+A(全选)2.Ctrl+K3.Ctrl+F   部分对齐(对齐光标所在行或对齐选中代码行):(按两次组合键)1.Ctrl+K2.Ctrl+F......
  • echarts各类术语和常用配置
    1.术语,按照默认从上到下顺序(即setOption({})里的配置项)官方配置项说明:Documentation-ApacheEChartstitle图表的标题,默认左上角黑色加粗显示legend图例tooltip提示框,就是鼠标移动到某部分图形(例如柱状图的某跟柱或者饼图的某个扇区)在鼠标旁边跟随出现的方框,一般......
  • arm设备调试常用方式
    known_hosts过期:ssh-keyscan-Hxxx.xxx.xx.xxx>>~/.ssh/known_hostsgitconfig--global--addurl."[email protected]:".insteadOf"http://xxx.xxx.xx.xxx/"scp跨服务器拷贝文件[email protected]:/home/xxxxxxxx/others/singleapk/......
  • git 常用指令与简单规范
    1.前言随着前端项目数量、前端开发人员、前端业务的日渐增多,则非常有必要整理一份简单的git规范,来进行项目开发的规范化约束。本文包括开发常用git指令、git分支管理规范、git提交规范等。2.git常用指令2.1.查看最新的远程分支#查看远程分支gitbranch-r#......
  • 海康摄像机&大华摄像机&DSS平台的RTSP流地址格式
    实时流海康: rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username:用户名。例如admin。password:密码。例如12345。ip:为设备IP。例如192.0.0.64。port:端口号默认为554,若为默认可不填写。codec:有h264、MPEG-4、mpeg4这几......
  • PageOffice6 版本常用事件
    1、AfterDocumentOpened事件打开文件后自动触发的事件是AfterDocumentOpened事件,它通常用于实现文件打开后自动执行某些业务逻辑,比如将默认控件全屏、禁止保存、另存、打印,或者显示或隐藏痕迹等。因此,所有需要在文件打开后自动触发的业务逻辑代码都可以放在此事件中执行。在实......