public class ConvertByte {
/**
* 一、int與字節數組的相互轉換
*/
//int轉爲字節數組
public static byte[] int2Bytes(int id){
byte[] arr=new byte[4]; //int型爲四個字節
/*arr[0]=(byte)((int)(id>>0*8)&0xff);
arr[1]=(byte)((int)(id>>1*8)&0xff);
arr[2]=(byte)((int)(id>>2*8)&0xff);
arr[3]=(byte)((int)(id>>3*8)&0xff);
*/
for(int i=0;i<arr.length;i++){ //與上面註釋掉的代碼效果相同
arr[i]=(byte)((id>>i*8)&0xff);
}
return arr;
}
//字節數組轉爲int
public static int bytes2Int(byte[] arr){
int result=0;
for(int i=0;i<arr.length;i++){
result|=(int)((arr[i]&0xff)<<i*8);
}
return result;
}
/**
* 二、long與字節數組的相互轉換
*/
//long轉爲字節數組
public static byte[] long2Bytes(int id){
byte[] arr=new byte[8];//long型爲8個字節
for(int i=0;i<arr.length;i++){
arr[i]=(byte)((id>>i*8)&0xff);
}
return arr;
}
//字節數組轉爲long
public static int bytes2Long(byte[] arr){
int result=0;
for(int i=0;i<arr.length;i++){
result|=(long)((arr[i]&0xff)<<i*8);
}
return result;
}
public static void main(String[] args) {
byte[] arr=int2Bytes(8183);
System.out.print("int型8183的字節數組爲: ");
System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]); //int轉爲字節數組
System.out.println(bytes2Int(arr)); //字節數組轉爲int
byte[] arr1=long2Bytes(7888);
System.out.print("long型7888的字節數組爲: ");
System.out.println(arr1[0]+","+arr1[1]+","+arr1[2]+","
+arr1[3]+","+arr1[4]+","+arr1[5]+","+arr1[6]+","+arr1[7]);
System.out.println(bytes2Long(arr1));
/**
* 三、字符串與字節數組的相互轉換
*/
//String轉換爲字節數組
String describe="夢想"; //每個漢字佔2個字節
byte[] barr=describe.getBytes();
System.out.print("”夢想“的字節數組爲: ");
/*for(int i=0;i<barr.length;i++){
System.out.print(barr[i]+" ");
}*/
for(byte b:barr){ //等效於上面的for循環
System.out.print(b+" ");
}
System.out.println();
//字節數組轉換爲字符串
String des=new String(barr);
System.out.println(des);
}
}
運行結果:
int型8183的字節數組爲: -9,31,0,0
8183
long型7888的字節數組爲: -48,30,0,0,-48,30,0,0
7888
夢想的字節數組爲: -61 -50 -49 -21
夢想