This topic has been archived. It cannot be replied.
-
工作学习 / 专业技术讨论 / 64位AIX上的问题:unsigned long 转换为int会出错,同样的问题在Solaris(64位),AIX(32位),Redhat,HP UX(64bit)都不会出现. 是否要打什么补丁才行?
-mike20030405(mike);
2006-1-9
{1001}
(#2708487@0)
-
你根本就不应该这么转换。没用过aix ,不过这明显是long和int字长不一样造成的。789 ==0x03 15, 123 == 0x7B
528280978197==0x7B 00 00 03 15
说明aix 上int 是4字节,long是8字节,字节序是高位在前。
-holdon(again);
2006-1-9
{116}
(#2708835@0)
-
必需这么转换,同样的问题还会出现在long和short,short和int,int和char之间的转换,程序里这样的语句成千上万,我没法一一去改和测试.高低字节你分析的很对,高手.
-mike20030405(mike);
2006-1-10
(#2709290@0)
-
既然你的程序在 Redhat(pc? ) 上能跑,那4字节 的long似乎已经够用了。你可以把所有的long换成LONG什么的,再来个define LONG int?
-holdon(again);
2006-1-10
(#2709538@0)
-
目前这也是我的解决方案之一
-mike20030405(mike);
2006-1-10
(#2710182@0)
-
选中的方案是:改系统内核为32bit模式,重新编译所有应用.
-mike20030405(mike);
2006-1-10
(#2710387@0)
-
test((int *)&i); <-- 这步错了.
-randomwalk(跳--跳--跳);
2006-1-9
(#2709011@0)
-
come on, man.我要的是解决方案,不是要讨论这些初级的编程问题.
-mike20030405(mike);
2006-1-10
(#2709292@0)
-
在主程序里按操作系统宏定义i的类型.
-randomwalk(跳--跳--跳);
2006-1-10
(#2710185@0)
-
原来我们在HP和PC之间通信的时候遇到过类似的问题用的是下面的文章提到的函数,不过那时候没有64位的。
http://www.awprofessional.com/articles/article.asp?p=169505&seqNum=4&rl=1
-oasis(oasis);
2006-1-10
{127}
(#2709295@0)
-
跨主机通信字节序列处理有标准的封装函数,省心多了.
-mike20030405(mike);
2006-1-10
(#2710188@0)
-
97年左右我们移植系统的时候遇到过类似的高低位问题,最终的解决方案是用awk写程序把所有的C程序改了
-heeltoe(HeelToe);
2006-1-10
(#2709302@0)
-
就怕最后只有这一条路,所以才来这里求助啊
-mike20030405(mike);
2006-1-10
(#2710192@0)
-
请问您的编译选项里面有没有64位的那个东东?4年前的印象了。。。久不写C了
-lpcome(饭主席);
2006-1-10
(#2709426@0)
-
有-maix64, 环境变量中有OBJECT_MODE=64.
-mike20030405(mike);
2006-1-10
(#2710169@0)
-
给你一个小小的提示:你以后再这里多回答一些问题,估计你这个问题就有人帮你了.
-iwantcar(EnjoyStudying);
2006-1-10
{54}
(#2709449@0)
-
Good idea! Thanks
-mike20030405(mike);
2006-1-10
(#2710172@0)
-
你把这八个字节看成字符串,然后把它转成任何数字都可以了,就是简单的移位.老是看见你在这里问方案,却很少干任何其它事情,下次要请我喝茶.
-iwantcar(EnjoyStudying);
2006-1-10
{59}
(#2710396@0)
-
我估计你的问题的答案是这样的,没有时间读你的那些乱七八糟的代码.
-iwantcar(EnjoyStudying);
2006-1-10
(#2710399@0)
-
哈哈,没问题.你在温哥华就可以请你.不是我不回答问题,水平不够啊.
-mike20030405(mike);
2006-1-10
(#2710569@0)
-
那好.如果不行,研究一下#prama pack(1) most compiler support it.
-iwantcar(EnjoyStudying);
2006-1-10
(#2710655@0)