日期:2014-05-20  浏览次数:20647 次

高手请过目,C++与java 转换的一个问题.请高手解答,不胜感激!!!
现在有C的表达式 i64 = ((__int64)(*(ob+20))<<32);
如何将它转换为用java语言表示的表达式?  
因为_int64是64位的数据类型,所以很难在java中找到转换的。

------解决方案--------------------
用long来对应
long i64 = (long)(ob[20]<<32); //*(ob+20)相当于数组的ob[20]



------解决方案--------------------
探讨

用long来对应
long i64 = (long)(ob[20]<<32); //*(ob+20)相当于数组的ob[20]

------解决方案--------------------
long iii = (unsigned4BytesToInt(copyBrr(ob, 20), 0) << 32)&0xFFFFFFFFL; 

这一行是要干神马?难道iii 的结果不是恒为0吗?
------解决方案--------------------
探讨
曾这样写过,但遇到大的数,这样转换就不对了

------解决方案--------------------
探讨
引用:
曾这样写过,但遇到大的数,这样转换就不对了

为什么不对,有没有仔细想过?你是先 |,再强行转换为long,这样如果是负数的话(超过了int范围),转成long也就变成了负数,所以要先转成long,再 |


long unsignedLong = ((long) (firstByte | secondByte << 8 | thirdByte << 16 |……