Bitshifting读/写数据

时间:2011-03-18 11:31:15

标签: java

我在Java中发送2个整数作为一个整数,并且在我的生活中无法解决如何使用位移来正确发送这些整数。

我有一个创建long的方法:

public long create(int one, int two){
return      (one <<32 & two);
}

首先,这是正确的吗? (将两个整数一起发送到一起)

其次,如果我想访问其中一个或两个,我该怎么做呢?

这是一个简单的例子:

   public static int getOne(long theLong) {
        return (int)theLong >> 32;

    }

还是有点复杂的东西?

非常感谢一些指导,谢谢!

2 个答案:

答案 0 :(得分:1)

当移动int值时,第二个运算符(移位宽度)为&,编辑为31,因此someInt << 32someInt。在转移前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()