关于编码-解码
2016-02-15 09:50
316 查看
今天小伙伴问我一个问题:为何要有时候需要编码解码?再不清晰的做编码解码的过程之后,文字会显示:?????
这是为什么咩?
首先:因为我们不是美人,因为美国人文字特别少,A-Z所以0-255的编码已经足够,也就是我们说的byte,8位的二进制结构(1byte = 8bit)。(ascii ios-8859-1)
但是我泱泱中华,0-255能干点什么? 三字经都表示不完整!
那么要如何解决呢?
我们引入一个新的数据结构:【char】
编解码就是这两者的相互转化:【byte】 [cahr],编码就是从[char]到[byte],反之为解码
拿UNICODE来说吧。UTF-16 顾名思义也就是16位的2进制表示一个字符eg:1111111111000000
举个例子:
我们输入了:
嗨喽,世界
[char]数组就有可能是:
[b12,c12,d12,e31]
[byte]数组就应该是:
[00100000,00100000,00100000,00100000,00100000,00100000,00100000,00100000]
在计算机中的基本数据单元是:最后一个byte,为了能让计算机存储识别,我们必须要将我们输入的文字转换为bytes存储起来(bytes这里是byte的数组的意思)
为了从计算机口中获取出我们想要的内容那么就需要解码:将[byte]搞成 [char]
那么有了UNICODE之后我们的汉字也可以完整的收录了。
这是为什么咩?
首先:因为我们不是美人,因为美国人文字特别少,A-Z所以0-255的编码已经足够,也就是我们说的byte,8位的二进制结构(1byte = 8bit)。(ascii ios-8859-1)
但是我泱泱中华,0-255能干点什么? 三字经都表示不完整!
那么要如何解决呢?
我们引入一个新的数据结构:【char】
编解码就是这两者的相互转化:【byte】 [cahr],编码就是从[char]到[byte],反之为解码
拿UNICODE来说吧。UTF-16 顾名思义也就是16位的2进制表示一个字符eg:1111111111000000
举个例子:
我们输入了:
嗨喽,世界
[char]数组就有可能是:
[b12,c12,d12,e31]
[byte]数组就应该是:
[00100000,00100000,00100000,00100000,00100000,00100000,00100000,00100000]
在计算机中的基本数据单元是:最后一个byte,为了能让计算机存储识别,我们必须要将我们输入的文字转换为bytes存储起来(bytes这里是byte的数组的意思)
为了从计算机口中获取出我们想要的内容那么就需要解码:将[byte]搞成 [char]
那么有了UNICODE之后我们的汉字也可以完整的收录了。
相关文章推荐
- 五角大楼希望加强网络安全队伍 为 2020 美国总统大选护航
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- ASP编码必备的8条原则
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- Perl ASCII 字符判断
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- XML指南——XML编码
- C#中字符串编码处理
- mysql binlog二进制日志详解
- ExtJS中文乱码之GBK格式编码解决方案及代码
- 程序员趣味读物 谈谈Unicode编码
- 文本文件编码方式区别
- 数据结构之Treap详解
- 详解C++编程中对二进制文件的读写操作
- 与ASCII码相关的C语言字符串操作函数
- C语言安全编码之数值中的sizeof操作符
- 整理C# 二进制,十进制,十六进制 互转