2013-02-27 95 views
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("]"); 
} 

我想是改变是能够把整个二进制串入一个字节数组。像获取每个十六进制数的二进制值,然后把它放在巨大的字节数组

任何帮助PLZ和谢谢!

EDITED

好以及IM与它不事关所有的东西,我想他们是多么长的第一个会,他们仍然是正确的。但是现在你能帮我拿起并使用那根绳子。我有这样的代码:

** 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为什么但不会让我用它?

回答

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

接近,但你知道怎么来的就不会有打印出来,就像我期待64 1或0,但有可能两倍于每吨1的中 – erp 2013-02-28 00:15:08

0

试试这个(注意: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}); 
    } 
}