Go string深度理解之数据类型编码解码

1 整数存储

一个比特可以是0或是1,八个比特组成一个字节,全为0时代表0,全为1时代表255,即一个字节可以表示255个数字、两个字节可以表示65536个数字
在这里插入图片描述

2 字符存储

通过字符集ASCII来进行中转
例如 A:先根据ASCII码将A转为 65 ,再转为二进制01000001,如下图所示
在这里插入图片描述

3 汉字存储

ASCII字符集收录了128个字符,它的扩展字符集也只有256个,由此生出了GB2312来存储,但没有繁体字,又由此生出了BIG5,这样一直不断推出收录更多字符的字符集,不如制作一个通用的字符集,因此unicode字符集诞生了

在这里插入图片描述

4 多种类型结合的字符的解码编码

汉字使用Unicode编码,Unicode它为每种语言中的每个字符设定了统一且唯一的二进制编码,以满足跨语言、跨平台的要求

4.1 编码模板

注意:编号区间就为对应得十进制区间

编号编码模板字符大小
[0, 127]0xxxxxxx1个字符
[128, 2047]110xxxxx 10xxxxxx2个字符
[2048, 65535]1110xxxx 10xxxxxx 10xxxxxx3个字符

4.2 解码

不知道对应的汉字的 Unicode 十进制编码的可以在这网站在线查找
汉字字符集编码查询
在这里插入图片描述

例如:01001000 11100110 10011101 10101000

一个一个来解:
01001000这个字节最高位是0,那他就占用了一个字符,对照编码模板:除去标识位0,那剩余得7位就是该字符得二进制编号,1001000 对应十进制72对应字符H

11100110 这个字节以1110开头,那他就占用了三个字节,它要和后面两个以10开头得字节共同表示一个字符。如下为解码过程:

11100110 10011101 10101000 套入模板得:除去标识位1110 10 10 将剩下得三部分组合起来就得到了该字符得二进制编号01100111 01101000 ,它对应得十进制为 26472 对应汉字 杨

最后解码后为: H杨

4.3 编码

例:对 h鸡 进行编码,鸡对应得Unicode编码为40481
在这里插入图片描述
h:h对应十进制ASCII码为 104 ,根据编码模板,它是在区间编号[0, 127]范围内,即使用 0xxxxxxx 编码模板,带入得 01101000

鸡:该汉字对应的Unicode编码为40481,它是在区间编号[2048, 65535]范围内,即使用 1110xxxx 10xxxxxx 10xxxxxx 编码模板,40481的二进制为1001111000100001,带入得 11101001 10111000 10100001

最后编码后为:01101000 11101001 10111000 10100001

01101000 | 11101001 10111000 10100001
       h                              鸡

第一段表示h,第二、三、四段表示鸡

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值