我试图将int
转换成代表那个int
(大端)的三个bytes
。如何在Java中将int转换为三个字节?
我敢肯定,它有点与位和位移有关。但我不知道该怎么去做。
例如:
int myInt;
// some code
byte b1, b2 , b3; // b1 is most significant, then b2 then b3.
*注意,据我所知,一个int是4个字节和三个字节的上/下溢的机会。
我试图将int
转换成代表那个int
(大端)的三个bytes
。如何在Java中将int转换为三个字节?
我敢肯定,它有点与位和位移有关。但我不知道该怎么去做。
例如:
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进行“与”操作将返回第二个字节。类似地,将该数字向右移动16次,将位16至23放入位位置0至7,因此与0xFF进行“与”操作将返回第3个字节。
int不适合3个字节。但是,假设你知道这些特定的人做的事:
byte b1 = (myInt & 0xff);
myInt >>= 8;
byte b2 = (myInt & 0xff);
myInt >>= 8;
byte b3 = (myInt & 0xff);
byte b1 = (myint >> 16) & 0xff;
byte b2 = (myint >> 8) & 0xff;
byte b3 = myint & 0xff;
我不能确定这是如何holfds在Java中,虽然,我AAM不是Java开发
在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);
输出
你已经有了逆转的最大/最小显著秩序。 – Darron 2008-10-09 02:52:27
没有必要不必要地修改myInt,如其他答案所示。 – 2008-10-09 03:04:11