如何在Java中将int转换为三个字节?

我试图将一个int转换为三个bytes表示int (big endian)。

我确定它与逐位和位移有关。 但我不知道如何去做。

例如:

 int myInt; // some code byte b1, b2 , b3; // b1 is most significant, then b2 then b3. 

*注意,我知道int是4个字节,三个字节有可能过度/不足。

要获得最不重要的字节:

 b3 = myInt & 0xFF; 

第二个最低有效字节:

 b2 = (myInt >> 8) & 0xFF; 

第三个最低有效字节:

 b1 = (myInt >> 16) & 0xFF; 

说明:

使用0xFF(二进制11111111)对值进行按位与运算将返回该数字中的最低有效8位(位0到7)。 将数字向右移动8次将位8到15放入位0到7,因此与0xFF进行AND运算将返回第二个字节。 类似地,将数字向右移动16次将位16到23置于位0到7中,因此与0xFF进行AND运算会返回第3个字节。

 byte b1 = (myint >> 16) & 0xff; byte b2 = (myint >> 8) & 0xff; byte b3 = myint & 0xff; 

我不确定这在java中如何,但我不是一个java dev

int不适合3个字节。 但是,假设您知道这些特定的:

  byte b1 = (myInt & 0xff); myInt >>= 8; byte b2 = (myInt & 0xff); myInt >>= 8; byte b3 = (myInt & 0xff); 

在Java中

 int myInt = 1; byte b1,b2,b3; b3 = (byte)(myInt & 0xFF); b2 = (byte)((myInt >> 8) & 0xFF); b1 = (byte)((myInt >> 16) & 0xFF); System.out.println(b1+" "+b2+" "+b3); 

输出0 0 1