java toBinaryString是不正确的?

-1 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);    
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到这个结果:

100000111000110001011100011000110110001 
Run Code Online (Sandbox Code Playgroud)

我不相信是正确的.不应该是:

101000011110000111110001
Run Code Online (Sandbox Code Playgroud)

这些结果实际上是一样的吗?为什么java会给我第一个结果?

Sot*_*lis 6

您没有将输入字符串解析为HEX表示.您将获取每个角色,获取其char值并将其转换为二进制表示.

你想要的是解析输入文本作为基数16整数

String hexCode = "A1E1F1";
int val = Integer.parseInt(hexCode, 16);
System.out.println(Integer.toBinaryString(val));
Run Code Online (Sandbox Code Playgroud)


Ell*_*sch 5

是.Integer.toBinaryString是正确的.你的答案是pos没有任何换行符的二进制文件.

1000001
110001
1000101
110001
1000110
110001
Run Code Online (Sandbox Code Playgroud)

您期望的输出要求您解码数字值.喜欢

String binCode = Integer.toBinaryString(Character.digit(pos, 16));
Run Code Online (Sandbox Code Playgroud)

然后输出是

101011110111111
Run Code Online (Sandbox Code Playgroud)