在下面的程序中,我将十六进制字符串"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;
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
0,1,10,11,100,101,110,111,1000,1001,1010,1011,1100,1101,1110,1111,
Run Code Online (Sandbox Code Playgroud)
但我要求输出如下
0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111,
Run Code Online (Sandbox Code Playgroud)
我找到的一种方法是附加0x
在每个十六进制字符的前面.如下:
0x0, 0x1, 0x2,............,0xE,0xF
Run Code Online (Sandbox Code Playgroud)
另一种方法是手动检查输出缺少4个字符的数量,然后将这些字符附加0
到它上面.但我不知道如何在上面的代码中实现前者.是否有任何有效的方法来做我上面尝试做的事情?
String.format("%04d", yournumber);
Run Code Online (Sandbox Code Playgroud)
要清楚:
public static String HexToBinary(char Hex) {
int i = Integer.parseInt(Character.toString(Hex), 16);
return String.format("%04d", Integer.parseInt(Integer.toBinaryString(i)));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6183 次 |
最近记录: |