将两个整合保存为一个

时间:2015-08-02 08:42:09

标签: java integer hex bitwise-operators

将两个int保存到一个int中的步骤如下:

  

底部字节包含块使用的扇区数。其他3   bytes包含块扇区的偏移量。

所以,如果我想提取我必须做的两个数字

int usedSectors  = num & 0xFF;
int sectorOffset = num >> 8;

但是如何将两个整数保存到一个int中,例如我已经使用了Sectors和sectorOffset(我们假设usedSectors只有0到255之间的1字节范围和0到16777215之间3个字节的sectorOffset)?

2 个答案:

答案 0 :(得分:3)

测试程序:

public class ByteTest {

  public static void main(String[] args) {
      int expectedUsedSectors = 4;
      int expectedSectorOffset = 20000;

      int num = expectedSectorOffset;
      num = num << 8;
      num |= expectedUsedSectors;

      int usedSectors  = num & 0xFF;
      int sectorOffset = num >> 8;

      System.out.println("used sectors expected == actual? " + (expectedUsedSectors == usedSectors));
      System.out.println("offset expected == actual? " + (expectedSectorOffset == sectorOffset));
    }
}

首先,我设置3字节值,然后移位8位,然后设置第二个数字。

答案 1 :(得分:2)

aggrigaated_int=0;    
aggrigaated_int+=first_num;
aggrigaated_int+=second_num <<8;