机器字节序

来源:互联网 发布:java软件面试问题 编辑:程序博客网 时间:2024/04/30 00:47

原文地址:http://blog.chinaunix.net/space.php?uid=9124312&do=blog&id=194950

 

 

 

不同的cpu类型有不同的字节序,字节序指的是字节在内存中的保存顺序。

Little-Endian:

低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
采用intel x86或其兼容芯片的系统都是Little-Endian,包含arm构建。
例如:0x1234 -> 0x34 0x12
Big-Endian:
高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
采用powerpc构架的机器一般都是Big-Endian,比如ibm的小型机,(比如运行aix操作系统的)。
例如:0x1234 -> 0x12 0x34

在cpu不同类型的机器上传递数据时,就要进行必要的字节转换。

file_endian 0x4321
system_endian 0x4321
内存中 DF 01 被当作short类型读取时,*((short *)(data))得到的是0x1df。这种情况不需要字节序转换。

file_endian 0x1234
system_endian 0x4321
内存中 01 DF 被当作short类型读取时,得到的是0xdf01。这时需要字节序转换。
 

 

原创粉丝点击