我有这个代码:
String hexCode = "A1E1F1";
int länge = hexCode.length ();
int i;
for (i = 0; i <= länge - 1 ; i ++) {
char pos = hexCode.charAt(i);
String binCode = Integer.toBinaryString(pos);
System.out.print ( binCode);
当我运行它时,我得到了这个结果:
100000111000110001011100011000110110001
我不相信是正确的。不应该是:
101000011110000111110001
这些结果实际上是一样的吗?为什么java会给我第一个结果?
答案 0 :(得分:6)
您没有将输入字符串解析为HEX表示。您将获取每个字符,获取其char
值并将其转换为二进制表示。
您想要的是将输入文本解析为基本16整数
String hexCode = "A1E1F1";
int val = Integer.parseInt(hexCode, 16);
System.out.println(Integer.toBinaryString(val));
答案 1 :(得分:5)
是。 Integer.toBinaryString是正确的。你的答案是pos
的二进制文件,没有任何换行符。
1000001
110001
1000101
110001
1000110
110001
您期望的输出要求您解码数字值。像
String binCode = Integer.toBinaryString(Character.digit(pos, 16));
然后输出
101011110111111