【问题标题】:convert bit array values into a string of binary numbers将位数组值转换为一串二进制数
【发布时间】:2013-02-27 23:59:34
【问题描述】:

现在看下半部分

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

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

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

【问题讨论】:

  • 这是两个不同的问题。你应该把它们分开。换句话说,“跟进”问题应该是他们自己的问题。

标签: java arrays binary type-conversion


【解决方案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( "]");
}

【讨论】:

  • 关闭,但你知道为什么会打印出大量的 1,就像我期待 64 个 1 或 0 一样,但可能是两倍
【解决方案2】:

试试这个(请注意,byte 是 8 位而不是 16 位,这可能是混淆的一部分,对于 16 位,您需要 short 而 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});
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2013-03-13
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多