次のプログラムでは、16進文字列「0123456789ABCDEF」をバイナリに変換しています。
public static void main(String[] args) {
// TODO Auto-generated method stub
String key = "0123456789ABCDEF"; //hexadecimal key
char[] keyCharArray = key.toCharArray();
for (int i = 0; i < key.length(); i++) {
System.out.print(HexToBinary((keyCharArray[i]))+",");
}
}
public static String HexToBinary(char Hex) {
int i = Integer.parseInt(Character.toString(Hex), 16);
String Bin = Integer.toBinaryString(i);
return Bin;
}
次の出力が得られます
0,1,10,11,100,101,110,111,1000,1001,1010,1011,1100,1101,1110,1111,
しかし、私は次のように出力する必要があります
0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111,
私が見つけた1つの方法は0x
、各16進文字の前に追加することです。次のように:
0x0, 0x1, 0x2,............,0xE,0xF
もう1つの方法は、出力が4文字に満たない文字数を手動で確認し、それらの文字数0
をそれに追加することです。しかし、上記のコードで前者を実装する方法がわかりません。上記でやろうとしていることを行うための効率的な方法はありますか?