将位数组值转换为二进制数字串

时间:2013-02-27 23:59:34

标签: java binary type-conversion bytearray

现在只看下半部分

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

到目前为止,我一直在努力的代码是:

    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( "]");
}

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

任何帮助PLZ和谢谢!

EDITED

好吧,我和第一个一起去它并不重要,我猜它们有多长,它们仍然是正确的。但现在你可以帮我拿走和使用那个字符串。我有这段代码:

**  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;
}**

但是由于我如何初始化字符串(起初)我的输出中有空值。任何想法如何解决?此外,我只是改变它追加,现在idk为什么但不会让我使用它?

2 个答案:

答案 0 :(得分: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 :(得分:1)

试试这个(注意byte是8位而不是16,正如您在上面建议的那样,这可能是混淆的一部分,对于16位,您需要short而32将是{ {1}})

int