Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 十六进制到二进制到字符串_Java_String_Append - Fatal编程技术网

Java 十六进制到二进制到字符串

Java 十六进制到二进制到字符串,java,string,append,Java,String,Append,我需要从这个字节数组中获取十六进制数并将它们转换成二进制,然后将所有二进制数转换成单个字符串。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}; p

我需要从这个字节数组中获取十六进制数并将它们转换成二进制,然后将所有二进制数转换成单个字符串。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;
}

知道为什么它们是不同长度的吗?我怎样才能使它们的长度相同呢。和第一个一样,FF应该是'11111111',但是如果我在转换数组中的单独字节时在它们之间加上空格,FF看起来像“1111111111111111111111111111111111111111111111”,我只想要8位的表示。

你可以用
binStr
字符串
类型替换为
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();
}

我是否也必须将公共静态字符串更改为StringBuilder?那么这个附加值会起作用吗?不,你可以返回一个
字符串
将不起作用的结果,因为toBinaryString不会将pad与zeroesokay一起离开!知道了。不过,还有一个简单的问题。请看我作品的编辑。抱歉,只是想学习。第二个输出仍然是短16个数字,这是我试图解决的问题,因为我需要比较这两个数字
11111111111111111111111111111111100011111111111111111111111111110111010001011111111111111111111111111011101110011111111111111111111111111110011001000100
1001011111111111111111111111111001101111111111111111111111111110110001010011111111111111111111111111111110101111001000000
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();
}
String binaryString = String.format("%8s", Integer.toBinaryString(array[i] & 0xFF)).replace(' ', '0');
binStr.append(binaryString);