int [] LETTERS = {0x69F99}
我想将每个十六进制数字转换为二进制数字,例如第一个十六进制数字(6)中的第一个十六进制数字:
String hex = Integer.toHexString(LETTERS[0]);
String binary = Integer.toBinaryString(hex.charAt(0));
System.out.println(binary);
输出:110110
如果我这样做Integer.toBinaryString(6),输出将是110,但我想要4位数的东西,是否可能?
答案 0 :(得分:0)
我只是根据您喜欢的库或实用程序函数填充字符串。
使用番石榴:
String binary = Strings.padStart(Integer.toBinaryString(hex.charAt(0)), 4, '0'));
另一种选择是简单地填充字符缓冲区并将其呈现为字符串,这基本上是OpenJDK implementation所做的:
public static String intToBin(int num) {
char[] buf = new char[4];
buf[0] = num & 0x1;
buf[1] = num & 0x2;
buf[2] = num & 0x4;
buf[3] = num & 0x8;
return new String(buf);
}
答案 1 :(得分:0)
这里没有字符串 - 只是一个带有一个int的数组,所以你基本上试图将这个整数转换成半字节,这可以这样做:
int num = 0x12345678;
String bin32 = String.format("%32s", Integer.toBinaryString(num)).replace(" ", "0");
System.out.printf("all 32bits=[%s]\n", bin32);
for(int nibble = 0; nibble < 32; nibble += 4)
{
System.out.printf("nibble[%d]=[%s]\n", nibble, bin32.subSequence(nibble, nibble+4));
}
给出:
all 32bits=[00010010001101000101011001111000]
nibble[0]=[0001] ie hex digit 1 as bin
nibble[4]=[0010] ie hex digit 2 as bin
nibble[8]=[0011]
nibble[12]=[0100]
nibble[16]=[0101]
nibble[20]=[0110]
nibble[24]=[0111]
nibble[28]=[1000] ie hex digit 8 as bin