我試圖將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