特别强调:只有多字节对象才会有多字节问题,单字节对象是不存在这个问题的多字节对象:比如int( 一般为4个字节),float,short(一般两个字节)等
单字节对象:char,bool单字节组成的数据,像字符串之类的,还是按照从低地址到高地址依次存储的,大家都一样
多字节对象就不同了,因为他有多个字节,然后顺序的问题就出现了,就像排列组合一样,多个元素排列方法多种多样(字节序只用到两种特殊的排列方式),但是只有一个元素时就只有一种排法了。
这里拿int(4个字节)来举例因为他有四个字节,当然一般来说肯定是4个连续的字节,这里假设首地址为0x100.有一个int型值 0x12345678
大端序:大位数在前
0x100 | 0x101 | 0x102 | 0x103 |
12 | 34 | 56 | 78 |
小端序:小位数在前
0x100 | 0x101 | 0x102 | 0x103 |
78 | 56 | 34 | 12 |
需要注意的是,不管是大端序还是小端序,单字节内的顺序都是一样的,比如小位的78不管排在哪里,都还是78,并不会变成87。大端序、小端序特指字节的顺序,这不废话么,说的就是字节序啊。。
有时候时间长了又忘了那个是大端哪个是小端,按照大位数在前为大端也容易弄混淆(不知道是不是因为我太笨,反正就是经常混淆)。想到了一个比较好的方式。不知道有没有效呢,就是网络序(大端序)和人类的习惯是一样的,大位数在前。小端序(intel为代表)和人类习惯是相反的,反人类的。。
参考:https://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E5%BA%8F#.E5.8F.82.E8.80.83