- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mips 是 big-endian 的 mips 架 构 , mipsel 是 little-endian 的 mips 架构。
他们之间的区别就是内存中存放的数据的字节顺序相反,也就是把低位放在低地址还是高地址。
little endian 和big endian 是表示计算机字节顺序的两种格式,所谓的字节顺序指的是长度跨越多个字节的数据的存放形式.
假设从地址 0开始的一个字中保存有数据 0x1234abcd,那么在两种不同的内存顺序的机器上从字节的角度去看的话分别表示为:
little endian:在内存中的存放顺序是
00xcd,00xab,00x34,00x12
big endian:在内存中的存放顺序是
00x12,00x34,00xab,00xcd
需要特别说明的是,以上假设机器是每个内存单元以 8 位即一个字节为单位的.
简单的说,little endian 把低字节存放在内存的低位;而 big endian
将低字节存放在内存的高位.
现在主流的CPU,intel 系列的是采用的little endian 的格式存放数据,
而 motorola 系列的 CPU 采用的是 big endian.
以下是判断字节存储顺序的可移植的 C 语言代码:
/******************************************************************** created: 2006-9-5
filename: test.cpp author: 李创
purpose: 可移植的用于判断存储格式是
little endian 还是 big ednian 的 C 代码取自C: A Reference Manual
*********************************************************************
/
#include stdio.h
union
{
long Long;
char Char[sizeof(long)];
}u;
int main()
{
u.Long = 1;
if (u.Char[0] == 1)
{
printf(Little Endian!\n);
}
else if (u.Char[sizeof(long) - 1] == 1)
{
printf(Big Endian!\n);
}
else
{
printf(Unknown Addressing!\n);
}
printf(Now, Lets look at every byte in the memory!\n); for (int i = 0; i sizeof(long); ++i)
{
printf([%x] = %x\n, u.Char, u.Char);
}
return 0;
}
很多人认为掌握这个知识是不必要,其实不然.在网络编程中,TCP/IP 统一采用big endian 方式传送数据,也就是说,假设现在是在一个字节顺序是
little endian 的机器上传送数据,要求传送的数据是 0XCEFABOBO,那么你就要以0XBOBOFACE 的顺序在 unsigned int 中存放这个数据,只有这样才能保证存放的顺序满足 TCP/IP 的字节顺序要求.很多时候,需要自己编写应用层的协议,字节顺序的概念在这个时候就显得及其的重要了.
下面给出的是在 big endian 和 little endian 中相互转换的代码,C 语言强大的位操作的能力在这里显示了出来:
/********************************************************************
created: 2006-9-5
filename: get32put32.cpp
author: 李创
purpose: 在 little endian 和 big ednian 之间相互转化数据的演示代码
*********************************************************************
/
#include stdio.h
const unsigned char SIZE_OF_UNSIGNEDINT = sizeof(unsigned int); const unsigned char SIZE_OF_UNSIGNEDCHAR = sizeof(unsigne
您可能关注的文档
最近下载
- 压铸件毛坯质量检验标准规范.doc VIP
- 平车运送法操作流程与考核评分标准.docx VIP
- 八年级物理上册第三章《物态变化》测试题-人教版(含答案) .pdf VIP
- 单轨吊司机岗位知识考试试题及答案.pdf VIP
- 财务共享服务中心核算手册.pdf VIP
- 广东某银行2025年支行清收条线人员绩效薪酬分配指引.docx VIP
- 49.织袜操作规程.doc VIP
- 蠕变模型下波形弹簧弹力衰减特性与寿命预测分析.docx VIP
- 外研版(2021)中职英语基础模块1 Unit 5 We Have Only One Earth Listening&Speaking 教案.docx VIP
- 费思超大功率电子负载FT68200AALENNZ系列用户手册 V4.4 202405.pdf VIP
文档评论(0)