我需要从这个字节数组中取十六进制数并将它们转换为二进制数,然后将所有二进制数放入一个字符串中。甲
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'。任何想法如何解决?另外,我只是将其更改为附加以解决我遇到的问题,现在我不知道为什么,但它不会让我使用它。
* 编辑编辑编辑编辑*
好的,现在我有了:
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位表示。
答案 0 :(得分:2)
您只需将binStr
String
类型替换为StringBuilder
:
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();
}
更新:
由于toBinaryString
没有左键填充你可能想要使用(8位LHS填充):
String binaryString = String.format("%8s", Integer.toBinaryString(array[i] & 0xFF)).replace(' ', '0');
binStr.append(binaryString);