浅析Solaris移植到linux的大小字节序问题-ffcs.PDF

浅析Solaris移植到linux的大小字节序问题-ffcs.PDF

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅析Solaris移植到linux的大小字节序问题-ffcs

浅析 Solaris 移植到 linux 的大小字节序问题 市场部/林铮 一. 前言 随着 Linux 操作系统的逐渐普及,很多公司都在考虑如何将已 有的 Solaris 应用程序和开发环境移植到 Linux 上。本文对 C/C++ 语言从 solaris(32bit)移植到 linux(32bit)环境上的过程中,可能 遇到的大小字节序的问题和解决方案进行说明。 当有2个字节以上的数值存入计算机内存或是文档的时候,又或 是进行数据转送的时候,我们要考虑先把哪个位置的字节存入内存地 址的高位?或是要先转送哪个位置的数据?像这样的次序考虑,就称 为endian或者是byte order(字节序)。 Little endian(小端):按照最低字节在地址最低位,最高字节 在地址最高位的顺序排列。 Big endian(大端):按照最高字节在地址最低位,最低字节在 地址最高位的顺序排列。 字节序是根据CPU的构造来来决定的。一般来说,Solaris 是大 端,而Linux则是小端。 比如,要将这个为032bit(4字节)的16进制常量, 其按照不同的字节序存入内存时,其排列如下: Big endian(Solaris): 内容 12 34 56 78 地址 0 1 2 3 Little endian(Linux): 内容 78 56 34 12 地址 0 1 2 3 二. 大小字节序对移植的影响 字节序的移植性问题的话,只对short, int, long, float, double, pointer等多字节的类型有影响,而对单字节(char 型等), 或是字符串是没有影响的。 例如: int size; char data[7]; 把十进制数10,和字符串012345分别赋值到size和data,在字 1/4 节序不同的机器中,对size和data进行二进制转送,结果如下: 像这样的字节序的不同,当在字节序不同的机器(OS)间进行二进 制数据文档共享的时候,或是通过网络进行通信的时候,就会产生问 题。在多个机器(OS)间进行数据交互的时候, 要事先决定是否把数据类型统一成某种形式。 关于字节序,要考虑以下的事项: (1) 磁盘中的数据文档共享 (2) 网络中的数据传送 (3) 共用体(C 语言) (4) 进行了型变换的指针(C 语言) (5) 无视型定义的数据访问 (C 语言 ) (1) 磁盘上的数据文档共享 在单系的处理系统众写入的多字节数值,从别的处理系统中读取 的时候,发生了字节序的问题。或者是Symfoware,Oracle等数据库, 文档中进行二进制处理的时候也会发生问题。 在大端机器上做成的文档,要在小端机器上去读取的话,就要考 虑进行字节序转换,或者是对文档本身进行字节序转换。 (2) 网络的数据传送 Linux常用的Intel系列的机器,host byte order指的就是little endian(小端),而与此对应得就是网络中的network byte order指 的就是big endian(大端)。 2/4 Solaris的话,

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档