0

现在只看下半部分

我在这里看到过将十六进制转换为二进制的方法,但我的问题是:是否可以将字节数组中的十六进制值转换为二进制值并将其放入一个大字符串中?

到目前为止,我一直在处理的代码是:

public static void main (String[] args){

    byte [] ex;
    ex = new byte [] {(byte)0xFF, (byte)0x11, (byte)0xEE, (byte)0x22, (byte)0xDD, (byte)0x33, (byte)0xCC, (byte)0x44};
    printByteArray(ex);

}

public static void printByteArray(byte [] array)


{
    System.out.print("[  ");
    for(int i = 0; i < array.length; i++)
    {
        System.out.print(Integer.toHexString((array[i]>>4)&0x0F).toUpperCase());
        System.out.print(Integer.toHexString(array[i]&0x0F).toUpperCase() + "  ");
    }
    System.out.println( "]");
}

我想要改变的是能够将整个二进制字符串放入一个字节数组中,即获取每个十六进制数的二进制值,然后将其全部放入巨大的字节数组中。

已编辑

好吧,我将使用第一个,这并不重要,我猜它们有多长,它们仍然是正确的。但是现在你能不能帮我拿走那根绳子。我有这个代码:

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在其中。任何想法如何解决这个问题?另外我只是将其更改为附加,现在我不知道为什么但不会让我使用它?

4

2 回答 2

1

试试这个(请注意,这byte是 8 位而不是 16 位,因为您似乎在上面建议,这可能是混淆的一部分,对于 16 位您想要 ashort和 32 将是int

public class PrintBytes {

  public static void printByteArray(byte [] array)

  {
    System.out.print("[ ");
    for (byte anArray : array) {
      byte b = anArray;
      for (int j = 0; j < 8; j++) {
        System.out.print((b & 128) < 1 ? "0" : "1");
        b <<= 1;
      }
      System.out.print(" ");
    }
    System.out.println( "]");
  }

  public static void main(String[] args) {
    printByteArray(new byte[] {64, 32, -1});
  }
}
于 2013-02-28T00:24:40.790 回答
1

Integer.toBinaryString 会给你你想要的吗?

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toBinaryString(int)

public static void printByteArray(byte [] array)
{
    System.out.print("[  ");
    for(int i = 0; i < array.length; i++)
    {
        System.out.print(Integer.toBinaryString(array[i]));
    }
    System.out.println( "]");
}
于 2013-02-28T00:06:27.537 回答