private static String hexStr = "0123456789ABCDEF";
private static String[] binaryArray =
{"0000","0001","0010","0011",
"0100","0101","0110","0111",
"1000","1001","1010","1011",
"1100","1101","1110","1111"};
/**
* @return 二進制數組轉換為二進制字符串 2->2
*/
public static String bytes2BinStr(byte[] bArray){
String outStr = "";
int pos = 0;
for(byte b:bArray){
//高四位
pos = (b&0xF0)>>4;
outStr+=binaryArray[pos];
//低四位
pos=b&0x0F;
outStr+=binaryArray[pos];
}
return outStr;
}
/**
* @return 將十六進制轉換為二進制字節數組 16->2
*/
public static byte[] hexStr2BinArr(String hexString){
//hexString的長度對2取整,作為bytes的長度
int len = hexString.length()/2;
byte[] bytes = new byte[len];
byte high = 0;//字節高四位
byte low = 0;//字節低四位
for(int i=0;i<len;i++){
//右移四位得到高位
high = (byte)((hexStr.indexOf(hexString.charAt(2*i)))<<4);
low = (byte)hexStr.indexOf(hexString.charAt(2*i+1));
bytes[i] = (byte) (high|low);//高地位做或運算
}
return bytes;
}
public static String hexStr2BinStr(String hexString){
return bytes2BinStr(hexStr2BinArr(hexString));
}
/**
* @return二進制轉換十進制
*/
Integer.parseInt(str,2);