java toBinaryString是不正确的?

时间:2014-11-25 17:09:07

标签: java

我有这个代码:

    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会给我第一个结果?

2 个答案:

答案 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