六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 91|回复: 0

Big Endian 和 Little Endian

[复制链接]

升级  29.67%

87

主题

87

主题

87

主题

举人

Rank: 3Rank: 3

积分
289
 楼主| 发表于 2013-2-5 01:22:01 | 显示全部楼层 |阅读模式
最近在工作中遇到一些问题,我用 Java  按照特定的媒体格式在硬盘上生成一个二进制文件,然后该文件由 VC++ 写的播放器播放。结果播放器读取的数据和我在同样位置写入的不符,遂引出了Big Endian  和 Little Endian 的概念(“Endian”应该怎么发音?我也不知道,先把它读作”安迪安”,有谁知道告诉我^_^),最终我写了一个转换类在写文件时将  Big Endian 转换成 Little Endian (见 2)。
以下对于 Big Endian 和 Little Endian 的介绍转自博客《七里香》(http://ericbin.blogchina.com)
谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big  endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什么是big endian,什么又是little  endian呢?
其实big endian是指低地址存放最高有效字节(MSB),而little endian则是低地址存放最低有效字节(LSB)。
用文字说明可能比较抽象,下面用图像加以说明。比如数字0x12345678在两种不同字节序CPU中的存储顺序如下所示:
Big  Endian  低地址 高地址
----------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 12 | 34 | 56 | 78 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Little Endian

低地址  高地址
----------------------------------------->  

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 78 | 56 | 34 | 12 |  

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

从上面两图可以看出,采用big  endian方式存储数据是符合我们人类的思维习惯的。而little endian,!@#$%^&*,见鬼去吧 -_-
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表