Java中byte[]陣列和int之間的轉換
阿新 • • 發佈:2019-01-09
在最近的專案中需要用到byte[]和int互轉,找了一些資料選了其中感覺蠻不錯的一種解決方法記錄一下。
int轉byte[]
/**
* 將int數值轉換為佔四個位元組的byte陣列,本方法適用於(低位在前,高位在後)的順序。 和bytesToInt()配套使用
* @param value
* 要轉換的int值
* @return byte陣列
*/
public static byte[] intToBytes( int value )
{
byte[] src = new byte[4];
src[3] = (byte) ((value>>24) & 0xFF);
src[2] = (byte) ((value>>16) & 0xFF);
src[1] = (byte) ((value>>8) & 0xFF);
src[0] = (byte) (value & 0xFF);
return src;
}
/**
* 將int數值轉換為佔四個位元組的byte陣列,本方法適用於(高位在前,低位在後)的順序。 和bytesToInt2()配套使用
*/
public static byte[] intToBytes2(int value)
{
byte[] src = new byte[4];
src[0] = (byte) ((value>>24) & 0xFF);
src[1] = (byte) ((value>>16)& 0xFF);
src[2] = (byte) ((value>>8)&0xFF);
src[3] = (byte) (value & 0xFF);
return src;
}
byte[]轉int
/**
* byte陣列中取int數值,本方法適用於(低位在前,高位在後)的順序,和和intToBytes()配套使用
*
* @param src
* byte陣列
* @param offset
* 從陣列的第offset位開始
* @return int數值
*/
public static int bytesToInt(byte[] src, int offset) {
int value;
value = (int) ((src[offset] & 0xFF)
| ((src[offset+1] & 0xFF)<<8)
| ((src[offset+2] & 0xFF)<<16)
| ((src[offset+3] & 0xFF)<<24));
return value;
}
/**
* byte陣列中取int數值,本方法適用於(低位在後,高位在前)的順序。和intToBytes2()配套使用
*/
public static int bytesToInt2(byte[] src, int offset) {
int value;
value = (int) ( ((src[offset] & 0xFF)<<24)
|((src[offset+1] & 0xFF)<<16)
|((src[offset+2] & 0xFF)<<8)
|(src[offset+3] & 0xFF));
return value;
}