问一个基本的问题? int i=0;long l=i;i四个字节,l八个字节。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 thanks,long 的高四个字节是int a=123,long 的低四个字节是int b=456. to layueer,怎么转换?如果:int a=123;int b=456;long c=? 如果 int a =123; int=456楼主想得到 c=123456的话 可以这样String s = "" + a + b;long c = Long.parseLong(s); 考虑到效率,最好使用如下代码:int high = 123;int low = 456;long num = high; //这里自动转换num = num << 4 + low; 对不起,上面有个错误int high = 123;int low = 456;long num = high; //这里自动转换num = num << 32 + low; thanks,to wing9501,怎么转换有一部分数据是负数? 我的转换代码如下: int high = 123; int low = 456; byte h[]=new byte[4]; h=IntToByteArray(high); byte l[]=new byte[4]; l=IntToByteArray(low); byte n[]=new byte[8]; System.arraycopy(h,0,n,0,4); System.arraycopy(l,0,n,4,4); num=BytesToLong(n);不知我的对不对?各位高手指教一下?怎么转换有一部分数据是负数?使用wing9501(little bird)的方法有同样的问题?且两种方法的结果竞不一样? TO 楼主:看你费得这个劲!多简单的东西啊.<< long merge(int high, int low) { long lhigh = ((long)high)&0xFFFFFFFFL; long llow = ((long)low)&0xFFFFFFFFL; return (lhigh<<32&0xFFFFFFFF00000000L)|llow; }>>单元测试也给你:<< public void testMerge() { assertEquals(0x0000000000000000L, merge(0x00000000, 0x00000000)); assertEquals(0xFFFFFFFFFFFFFFFFL, merge(0xFFFFFFFF, 0xFFFFFFFF)); assertEquals(0x00000000FFFFFFFFL, merge(0x00000000, 0xFFFFFFFF)); assertEquals(0xFFFFFFFF00000000L, merge(0xFFFFFFFF, 0x00000000)); }>> 楼上的方法很好,算法完全正确,而且速度快(逻辑运算)。我上csdn没有规律,请搂主见谅。 DataFlavor是作什么用的? Java学习者的等待........大家来帮忙,期待您尽快的回复!!! JAVA移位问题 JAVA写注册表的问题 一个关于tcp通信的问题,高手进!!! 哪位会java的朋友帮个忙,帮忙看看这道考试的题目怎么做, 用SWT开发一个东西,最小会有多大? 用java写了个桌面程序,在别的电脑上用是不是要把jdk打包?太麻烦了吧,是不是c++写的话就不用打包类库?谢谢 ArrayList与HashMap的疑问,明天结贴 十万火急!!!!!!!!! 我是初学JAVA的大笨鸟,JAVA有很多类,不知道都是什么,请教各位帮忙 什么意思
long 的高四个字节是int a=123,
long 的低四个字节是int b=456.
怎么转换?如果:
int a=123;
int b=456;long c=?
long c = Long.parseLong(s);
int high = 123;
int low = 456;
long num = high; //这里自动转换
num = num << 4 + low;
int high = 123;
int low = 456;
long num = high; //这里自动转换
num = num << 32 + low;
to wing9501,
怎么转换有一部分数据是负数?
int high = 123;
int low = 456; byte h[]=new byte[4];
h=IntToByteArray(high); byte l[]=new byte[4];
l=IntToByteArray(low); byte n[]=new byte[8]; System.arraycopy(h,0,n,0,4);
System.arraycopy(l,0,n,4,4); num=BytesToLong(n);不知我的对不对?
各位高手指教一下?
怎么转换有一部分数据是负数?
使用wing9501(little bird)的方法有同样的问题?
且两种方法的结果竞不一样?
看你费得这个劲!多简单的东西啊.
<<
long merge(int high, int low) {
long lhigh = ((long)high)&0xFFFFFFFFL;
long llow = ((long)low)&0xFFFFFFFFL;
return (lhigh<<32&0xFFFFFFFF00000000L)|llow;
}
>>
单元测试也给你:
<<
public void testMerge() {
assertEquals(0x0000000000000000L, merge(0x00000000, 0x00000000));
assertEquals(0xFFFFFFFFFFFFFFFFL, merge(0xFFFFFFFF, 0xFFFFFFFF));
assertEquals(0x00000000FFFFFFFFL, merge(0x00000000, 0xFFFFFFFF));
assertEquals(0xFFFFFFFF00000000L, merge(0xFFFFFFFF, 0x00000000));
}
>>