求高手
java吧
全部回复
仅看楼主
level 6
lbj2004032 楼主
long SOURCE_ID=3059123861l;
int i = (int) SOURCE_ID;
long l = (long)i;
System.out.println(i);
System.out.println(l);
这段代码运行的结果:
-1235843435
-1235843435
问题是怎么把 int转回long结果为3059123861l
2012年11月28日 01点11分 1
level 9
能转? 不能啊,,,长度不一样怎么转...
2012年11月28日 01点11分 2
这是SGIP-SP协议里面的,或者问题就是 LONG和INT转化时怎么解决负号问题,当然我们要的都是无符号的整数,但是JAVA中时不能处理的
2012年11月28日 01点11分
回复 lbj2004032 :LONG和INT转化会自动截断最高位....
2012年11月28日 02点11分
level 10
[汗]Long.parseLong() 应该要损失精度。
2012年11月28日 01点11分 3
level 11

为什么非要转换?
2012年11月28日 01点11分 4
通讯会用到的
2012年11月28日 02点11分
level 6
lbj2004032 楼主
找到答案了
long SOURCE_ID=3059123861l;
int i = (int) SOURCE_ID;
long l = (long)i;
long temp=i>>>1;
temp<<=1; //判断是否为奇数,奇数加1
if(i%2!=0){temp+=1; } System.out.println(temp);
但是>>>是什么符号。。。
2012年11月28日 02点11分 5
好像是忽略符号的移位运算符。最高位补0
2012年11月28日 02点11分
回复 lsgggg123 :负数补1
2012年11月28日 02点11分
好像很厉害的样子
2012年11月28日 02点11分
1