全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何确定自己主机的字节序是大端字节序还是小端字节序?介绍:何为大端字节序和小端字节序?是在内存中存储字节的两种方式:大端字节序:高位值在内存中放低位地址;采用这种机制的处理器有IBM3700系列、PDP-10、Mortolora微处理器系列和绝大多数的RISC处理器。Motorola的PowerPC系列CPU采用big endian方式存储数据。小端字节序:低位值在内存中放低位地址。按照最低位字节(包含LSB的字节)至最高位字节(包含MSB的字节)的顺序,存放在连续的地址中。采用这种机制的处理器有PDP-11、VAX、Intel系列微处理器和一些网络通信设备。Intel的x86系列用little endian方式存储数据。例外:目前在各种体系的计算机中,通常采用big-endian和little-endian两种字节存储机制描述在多字节数中各个字节的存储顺序。除了big-endian和little-endian之外的多字节存储顺序就是middle-endian。这种存储顺序偶尔会在一些小型机体系中的十进制数的压缩格式中出现。方法一:一个主机是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的x86+windows是小端。例子:1 Solaristm OE (32-bit) Big2 Solaristm OE (64-bit) Big3 HP-UX (64-bit) Big4 HP-UX IA (64-bit) Big5 HP Tru64 UNIX Little6 AIX-Based Systems (64-bit) Big7 Microsoft Windows IA (32-bit) Little8 Microsoft Windows IA (64-bit) Little9 IBM zSeries Based Linux Big10 Linux IA (32-bit) Little11 Linux IA (64-bit) Little12 Microsoft Windows 64-bit for AMD Little13 Linux 64-bit for AMD Little15 HP Open VMS Little16 Apple Mac OS Big17 Solaris Operating System (x86) Little18 IBM Power Based Linux Big 方法二:通过程序查询可以了解自己的主机的字节序。程序一:#include using namespace std; union int number; char s; test;bool testBigEndin() test.number=0x01000002; return (test.s=0x01); void main() if (testBigEndin() coutbigendl; else coutsmallendl;在vc+6.0环境下,编译运行可以得出运行结果,即:得出本机的字节序类型。/方法三:一个字节8位刚好存储两个十六进制的数字。网络字节序即为大头字节序。判断当前平台是大头还是小头:#define BIGENDIAN (htons(1) = 1)当htons(1) = 1成立时,BIGENDIAN的值就是1,否则为0. 后续代码就可以通过 if (BIGENDIAN) 的形式来判断大小头。各操作系统都会实现这个函数:unit16_t htons(uint16_t host); 将16位主机字符顺序转换成网络字符顺序如果主机字节序是小头,则返回十进制host对应的大头;如果主机字节序是大头,则返回十进制host对应的大头(即不需要转换,本身就是大头).主机的字节序是大头还是小头由htons自己去确定。假设主机为小头字节序,那么十进制数字1(十六进制数字就是0x0001)的主机字节序就是:0X0100用htons将0X0100按小头字节序转换为网络字节序(大头)是:0X0001即传入参数host为0X0100,返回值就是0X0001。而因为程序是在当前平台上执行,所以cpu在读取16为short时都是按照本级的字节序小头来读的。cpu是不知道你返回的值是大头字节序的,它只知道都按本机的小头字节序来读取。所以传入值为0X0100,即十进制的1;而返回值为0X0001,即256.转换字节序后,本机cpu读取出来的short的值是不同的。 假设主机是大头,那么十进制数字1(十六进制数字就是0x0001)的主机字节序就是:0X0001htons不用转换,直接返回,因为本身就是网络字节序:0X0001即传入参数host为0X0001,返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025智慧消防预警系统行业市场供需格局与发展趋势研判文件
- 2025智慧水利行业市场需求变化分析及企业投资策略方向研究报告
- 2025年暖通考研试题及答案
- 2025智慧智慧房地产行业市场现状供需分析及投资评估规划分析研究报告
- 射箭裁判考试试题及答案
- 2025年中小学生国学常识知识竞赛题库(含答案)
- 2025年长跑比赛面试题库及答案
- 2025年机场消防员招聘面试题库及答案
- 2025年中小学教师中级职称考试试题及答案
- 2025下半年四川职业技术学院选调工作人员3人考试历年真题汇编带答案解析
- 铁路施工环保与安全措施计划
- 欠款合同协议书
- 赡养合同协议书
- 西医诊所日常管理制度
- 配电房电气设备维护方案
- 2025年广东省深圳市南山区第二外国语学校(集团)学府中学一模语文试卷
- 养老护老知识培训课件
- 学生安全劳动课件
- 苏教版四年级上册期末试卷10套(含答案)
- 商场内部环境卫生清扫保洁方案
- 肝胆外科常见病
评论
0/150
提交评论