-2
我需要從該字節數組中取出十六進制數字並將它們轉換爲二進制,然後將所有二進制文件放入一個字符串中。 A十六進制到二進制到字符串
public static void main (String[] args)
{
String binary;
byte [] ex;
ex = new byte [] {(byte)0xFF, (byte)0x11, (byte)0xEE, (byte)0x22, (byte)0xDD, (byte)0x33, (byte)0xCC, (byte)0x44};
printByteArray(ex);
binary = hexToBin(ex);
System.out.println(binary);
}
public static String hexToBin(byte [] array)
{
String binStr = null;
for(int i = 0; i < array.length; i++)
{
binStr.append(Integer.toBinaryString(array[i]));
}
return binStr;
}
但由於我初始化字符串(我的第一次嘗試)的事實,我的輸出中有'null'。任何想法如何解決這個問題?此外,我只是將它改爲追加以解決我與null有關的問題,現在我不知道爲什麼,但它不會讓我使用它。
* 編輯編輯編輯編輯編輯*
好是工作所以現在我有:
public static void main (String[] args){
String binary;
String binary2;
byte [] ex;
byte [] wx;
ex = new byte [] {(byte)0xFF, (byte)0x11, (byte)0xEE, (byte)0x22, (byte)0xDD, (byte)0x33, (byte)0xCC, (byte)0x44};
wx = new byte [] {(byte)0x12, (byte)0xCD, (byte)0xD8, (byte)0x53, (byte)0xFA, (byte)0x01, (byte)0x1C, (byte)0x40};
printByteArray(ex);
binary = hexToBin(ex);
System.out.println(binary);
binary2 = hexToBin(wx);
System.out.println(binary2);
}
public static String hexToBin(byte [] array)
{
StringBuilder binStr = new StringBuilder();
for(int i = 0; i < array.length; i++){
binStr.append(Integer.toBinaryString(array[i]));
}
return binStr.toString();
}
,但是這是我的輸出:
11111111111111111111111111111111100011111111111111111111111111110111010001011111111111111111111111111011101110011111111111111111111111111110011001000100
1001011111111111111111111111111001101111111111111111111111111110110001010011111111111111111111111111111110101111001000000
任何想法,爲什麼他們是差距?我怎麼能讓他們這樣他們是相同的長度。就像第一個FF應該是'11111111',但是如果我在轉換它們時在數組中的單獨字節之間放置空格,FF會變成'1111111111111111111111111111111111111111111111111',我只想要8位表示。
我是否必須更改公共靜態_String_以及聖ringBuilder?並會附加工作? – erp 2013-02-28 01:07:15
不,您可以返回[StringBuilder#toString](http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#toString())的結果,它是一個'String ' – Reimeus 2013-02-28 01:08:42
不會工作,因爲toBinaryString沒有留下零填充 – Bohemian 2013-02-28 01:21:07