有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java十六进制到二进制再到字符串

我需要从这个字节数组中提取十六进制数,将它们转换成二进制,然后将所有二进制数转换成一个字符串。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”。有办法解决吗?此外,我刚刚将其更改为append as,以修复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就会变成'1111111111111111111111111111111111111111',我只想要8位的表示


共 (1) 个答案

  1. # 1 楼答案

    您可以使用以下命令将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();
    }
    

    更新:

    由于toBinaryString没有留下您可能想要使用的零填充(8位LHS填充):

    String binaryString = String.format("%8s", Integer.toBinaryString(array[i] & 0xFF)).replace(' ', '0');
    binStr.append(binaryString);