免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4301 | 回复: 11
打印 上一主题 下一主题

大小端问题 [复制链接]

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-03 11:33 |只看该作者 |倒序浏览
比如,有一个项目目前在Intel的机器(假设,采用小端),现在想移植项目到IBM POWER上(假设,采用的是大端),那么这样移植会不会造成变量的值不同情况? 如何解决这个问题?

论坛徽章:
0
2 [报告]
发表于 2009-06-03 12:51 |只看该作者
如果你要和其他的机器有二进制格式的交互的话,就有可能了

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
3 [报告]
发表于 2009-06-03 13:15 |只看该作者
原帖由 gawk 于 2009-6-3 12:51 发表
如果你要和其他的机器有二进制格式的交互的话,就有可能了



二进制格式的交互 怎么理解?能说说吗?

论坛徽章:
0
4 [报告]
发表于 2009-06-03 14:53 |只看该作者
http://developers.sun.com.cn/exp ... Migration_Guide.pdf

p12 has a brief description on the impactings caused by big-endian issue.

论坛徽章:
0
5 [报告]
发表于 2009-06-03 17:09 |只看该作者
http://developers.sun.com.cn/exp ... Migration_Guide.pdf

p12 has a brief description on the impactings caused by big-endian issue.

论坛徽章:
0
6 [报告]
发表于 2009-06-03 17:57 |只看该作者

回复 #1 chenzhanyiczy 的帖子

如果有网络传输非字节的东西,比如整形,才会考虑大小端问题
如果没有这方面的需求,那么其他的都一样,一个rebuild all解决所有问题

但是,如果非要解决,都是用网络字节序来做统一的

论坛徽章:
0
7 [报告]
发表于 2009-06-04 07:41 |只看该作者
我猜2楼的意思,是说二进制码拿过去,会用有问题。
可能源码在特殊场合,也会有问题。
http://blog.csdn.net/beepbug/archive/2006/06/12/792203.aspx里,
union {
  float               f;
  unsigned char c[4];
}u;
  u.f = 1;
  printf(“%X\t%X\t%X\t%X\n”, u.c[3], u.c[2], u.c[1], u.c[0]);
  u.f = -1;
  printf(“%X\t%X\t%X\t%X\n”, u.c[3], u.c[2], u.c[1], u.c[0]);
那样的代码,就有问题。

论坛徽章:
0
8 [报告]
发表于 2009-06-05 16:38 |只看该作者
CU编号: 277013
注册:2005-6-5
最后登录: 2009-06-05
帖子:175
精华:0

可用积分:735 (丰衣足食)
信誉积分:100
专家积分:0 (本版:0)
空间积分:4
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


       
[推广获积分]  [引用]  [报告] [回复] 顶部
4楼 发表于 2009-6-3 14:53

http://developers.sun.com.cn/exp ... Migration_Guide.pdf

p12 has a brief description on the impactings caused by big-endian issue.

论坛徽章:
0
9 [报告]
发表于 2009-06-05 17:43 |只看该作者
二楼的意思是说跟其他机器有以二进制方式交换数据可能会有问题,自己跟自己搞没什么问题
二进制码拿过去不能用吧。二进制文件格式比如elf,a.out这些,是以不同的操作系统区分的呢还是以不同的硬件平台区分的?

原帖由 beepbug 于 2009-6-4 07:41 发表
我猜2楼的意思,是说二进制码拿过去,会用有问题。
可能源码在特殊场合,也会有问题。
http://blog.csdn.net/beepbug/archive/2006/06/12/792203.aspx里,
union {
  float               f;
  unsigned ...

论坛徽章:
0
10 [报告]
发表于 2009-06-06 08:32 |只看该作者
对于big-endian little-endian
1. 如果涉及到不同机器交互所采用的应用协议设计, 而采取是二进制(如:radius等)而非字符串型(如:HTTP), 那要对协议中所涉及到的长度采取规定统一字节续的方式, 如常用的二进制数据协议里用TLV(Type Length Value)格式组织协议数据, 那一般L长度基本都定为big-endian字节续.

2. 对于本机要注意: 取值做数字截断转换或增长的时候不要想当然认为低字节一定存储低有效位, 高字节存的一定是高有效位
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP