字节序问题 Endianness

特别强调:只有多字节对象才会有多字节问题,单字节对象是不存在这个问题的多字节对象:比如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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值