このバイト配列から16進数を取得し、それらを2進数に変換してから、すべての2進数を1つの文字列に入れる必要があります。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」が含まれていました。それを修正する方法はありますか?また、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
なぜそれらがdiffの長さであるかについて何か考えはありますか?同じ長さになるようにするにはどうすればよいですか。最初のFFと同様に、FFは「11111111」である必要がありますが、配列内の個別のバイトの間にスペースを入れて変換すると、FFは「1111111111111111111111111111111111111111111111111」のようになり、8ビット表現のみが必要になります。