我在Java中发送2个整数作为一个整数,并且在我的生活中无法解决如何使用位移来正确发送这些整数。
我有一个创建long的方法:
public long create(int one, int two){
return (one <<32 & two);
}
首先,这是正确的吗? (将两个整数一起发送到一起)
其次,如果我想访问其中一个或两个,我该怎么做呢?
这是一个简单的例子:
public static int getOne(long theLong) {
return (int)theLong >> 32;
}
还是有点复杂的东西?
非常感谢一些指导,谢谢!
答案 0 :(得分:1)
当移动int
值时,第二个运算符(移位宽度)为&
,编辑为31,因此someInt << 32
为someInt
。在转移前int
转换为long
:(long) someInt << 32
,现在将提供您期望的结果。
答案 1 :(得分:0)
尝试
public long create(int one, int two){
return ((long) one << 32) | (two & 0xFFFFFFFFL);
}
如果数据支持int
,则您发送数据的方式应支持多个long
值。 DataOuput
使用writeInt()
代替writeLong()