带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(7)

简介: 带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(7)

带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(6) https://developer.aliyun.com/article/1240882?groupCode=tech_library


10.4.3字节序


字节序顾名思义是指字节的顺序,对于单字节编码来说,一个字符对应一个字节,也就不存在字节序问题。但是对于UTF-16这种定长多字节编码,就有字节顺序问题了。


字节序其实跟操作系统和底层硬件有关,不仅只是UTF-16这种多字节编码存在字节序,只要是多字节类型的数据都存在字节顺序问题,比如short、int、long。


为了方便说明,我们这里举个例子:比如存一个整数值“305419896”对应16进制是0x12345678,有人习惯从左到右按顺序去存,也有人说高位当然要放到高位地址而低位放到低位地址,要从右往左存。


于是就有了下面两种存取方式:


其实这两种方式没有孰优孰劣,只是我们认知习惯有所不同 最终的设计不同,说来这都是阿拉伯人的锅啊,为什么数字高位非要在左边,这也引起了著名的大小端之争。


因此字节序也就有了大端和小端的概念,也形成了各自的阵营,比如Windows、FreeBSD、Linux 是小端序,Mac是大端序。其实大小端序并没有技术上的好坏之分。


小端序(Little-Endian):就是低位字节(即小端字节、尾端字节)存放在内存的低地址,而高位字节(即大端字节、头端字节)存放在内存的高地址。


大端序(Big-Endian ):就是高位字节(即大端字节、头端字节)存放在内存的低地址,低位字节(即小端字节、尾端字节)存放在内存的高地址。


▲ 图片引用自《面试必考,史上最通俗大小端字节序详解


对大小端字节序问题感兴趣的可以详读:脑残式网络编程入门(九):面试必考,史上最通俗大小端字节序详解》一文。



带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(8) https://developer.aliyun.com/article/1240879?groupCode=tech_library

相关文章
|
7月前
|
自然语言处理 C++
探究C/C++编码世界:从字符编码到中文处理之艺(二)
探究C/C++编码世界:从字符编码到中文处理之艺
208 2
|
存储
带你读《全景揭秘字符编码》之二:二、什么是字符编码?
带你读《全景揭秘字符编码》之二:二、什么是字符编码?
251 1
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(10)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(10)
100 0
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(3)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(3)
198 0
|
自然语言处理
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(2)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(2)
151 0
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(4)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(4)
184 0
|
存储
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)
152 0
|
自然语言处理
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(6)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(6)
164 0
|
存储
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(8)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(8)
180 0
|
存储 编解码
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(1)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(1)
189 0