Answers
你的方法是可以的,大小端的定义及存储情况如下:
大端模式(Big Endian):数据的低位保存在内存的高地址,数据的高位保存在内存的低地址
小端模式(Little Endian):数据的低位保存在内存的低地址,数据的高位保存在内存的高地址
例如:
1. 16bit宽的数0x1234(假设从地址0x4000开始存放)
在Little-endian模式CPU内存中的存放方式为:
内存地址 0x4000 0x4001
存放内容 0x34 0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址 0x4000 0x4001
存放内容 0x12 0x34
2. 32bit宽的数0x12345678(假设从地址0x4000开始存放)
在Little-endian模式CPU内存中的存放方式为:
内存地址 0x4000 0x4001 0x4002 0x4003
存放内容 0x78 0x56 0x34 0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址 0x4000 0x4001 0x4002 0x4003
存放内容 0x12 0x34 0x56 0x78
其实还可以通过union来判断大小端
:
联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性,可轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。
代码如下:
快递大哥梨子
answered 12 years, 9 months ago