如何判断主机字节序

如何判断主机字节序

ID:38131649

大小:34.00 KB

页数:3页

时间:2019-05-27

如何判断主机字节序_第1页
如何判断主机字节序_第2页
如何判断主机字节序_第3页
资源描述:

《如何判断主机字节序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、如何确定自己主机的字节序是大端字节序还是小端字节序?介绍:何为大端字节序和小端字节序?是在内存中存储字节的两种方式:大端字节序:高位值在内存中放低位地址;采用这种机制的处理器有IBM3700系列、PDP-10、Mortolora微处理器系列和绝大多数的RISC处理器。Motorola的PowerPC系列CPU采用bigendian方式存储数据。小端字节序:低位值在内存中放低位地址。按照最低位字节(包含LSB的字节)至最高位字节(包含MSB的字节)的顺序,存放在连续的地址中。采用这种机制的处理器有PDP-11、VAX、Intel系列微处理器和一些网络通信设备。Intel的x8

2、6系列用littleendian方式存储数据。例外:目前在各种体系的计算机中,通常采用big-endian和little-endian两种字节存储机制描述在多字节数中各个字节的存储顺序。除了big-endian和little-endian之外的多字节存储顺序就是middle-endian。这种存储顺序偶尔会在一些小型机体系中的十进制数的压缩格式中出现。方法一:一个主机是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的x86+windows是小端。例子:1Solaris[tm]OE(32-bit)Bi

3、g2Solaris[tm]OE(64-bit)Big3HP-UX(64-bit)Big4HP-UXIA(64-bit)Big5HPTru64UNIXLittle6AIX-BasedSystems(64-bit)Big7MicrosoftWindowsIA(32-bit)Little8MicrosoftWindowsIA(64-bit)Little9IBMzSeriesBasedLinuxBig10LinuxIA(32-bit)Little11LinuxIA(64-bit)Little12MicrosoftWindows64-bitforAMDLittle13Linux64-

4、bitforAMDLittle15HPOpenVMSLittle16AppleMacOSBig17SolarisOperatingSystem(x86)Little18IBMPowerBasedLinuxBig方法二:通过程序查询可以了解自己的主机的字节序。程序一:#includeusingnamespacestd;union{intnumber;chars;}test;booltestBigEndin(){test.number=0x01000002;return(test.s==0x01);}voidmain(){if(testBigEndin())

5、cout<<"big"<

6、DIAN的值就是1,否则为0.后续代码就可以通过if(BIGENDIAN){……}的形式来判断大小头。各操作系统都会实现这个函数:unit16_thtons(uint16_thost);将16位主机字符顺序转换成网络字符顺序如果主机字节序是小头,则返回十进制host对应的大头;如果主机字节序是大头,则返回十进制host对应的大头(即不需要转换,本身就是大头).主机的字节序是大头还是小头由htons自己去确定。假设主机为小头字节序,那么十进制数字1(十六进制数字就是0x0001)的主机字节序就是:0X0100用htons将0X0100按小头字节序转换为网络字节序(大头)是:0

7、X0001即传入参数host为0X0100,返回值就是0X0001。而因为程序是在当前平台上执行,所以cpu在读取16为short时都是按照本级的字节序小头来读的。cpu是不知道你返回的值是大头字节序的,它只知道都按本机的小头字节序来读取。所以传入值为0X0100,即十进制的1;而返回值为0X0001,即256.转换字节序后,本机cpu读取出来的short的值是不同的。假设主机是大头,那么十进制数字1(十六进制数字就是0x0001)的主机字节序就是:0X0001htons不用转换,直接返回,因为本身就是网络字节序:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。