全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何确定自己主机的字节序是大端字节序还是小端字节序?介绍:何为大端字节序和小端字节序?是在内存中存储字节的两种方式:大端字节序:高位值在内存中放低位地址;采用这种机制的处理器有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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSPSTC 170-2025隧道掘进机(TBM)数据采集、存储与前处理技术规程
- T/ZAWS 009-2024加氢站用高压氢气管道安装及检测规范
- T/HBSL 14-2025生产建设项目水土保持单元工程施工质量验收规范
- T/CIE 265-2024硅基无源光电器件电磁仿真规范
- T/CAOE 93-2025智慧海洋应急通信试验网络终端设备技术要求
- T/CSAE 482-2025纯电动与混合动力越野乘用车爬坡与脱困性能试验方法
- 2025~2026学年江西吉安市吉水县人教版五年级下册期末数学试卷【附答案】
- AI在梵语巴利语中的应用
- 2026学年广东省河源市三年级数学期末自测模拟难点突破题详细参考解析详细答案和解析
- PHP 上机考试试题(含详细答案解析)
- 电梯三级安全培训课件
- 2025年全国HIV抗体诊断试剂临床质量评估报告范文
- 阅读护理文献分享
- 血液体液溅洒处理流程
- 机电安装工程技术标书模板
- 担保合同范本
- 中职英语1 基础模块 Unit 3 shopping
- 全民国防教育日忆九一八事件勿忘国耻勇毅前行课件
- 简易砌墙合同范本
- 探讨在预防接种中如何与家长有效沟通
- 新汉语水平考试 HSK(四级)试题及答案
评论
0/150
提交评论