java - 为什么我得到错误的输出

标签 java string hex int

我编写了一个程序,使用以下代码将十六进制数转换为其等效的二进制形式,但我得到了错误的结果。代码如下:

public String convert(String num){
    String res="";
    int []hex={0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111};
    int i;
    char ch;
    for(i=0;i<num.length();i++)
    {
        ch=num.charAt(i);
        if(ch>='a' && ch<='f'){
            res+=hex[ch-97+10]+"";
        }
        else if(ch>='A' && ch<='F'){
            res+=hex[ch-65+10]+"";
        }
        else if(ch>='0' && ch<='9'){
            int d=ch-48;
            res+=hex[d]+"";
        }
    }
    return res;
}

如果我将示例输入作为“12ae”,那么我将得到相应的输出“1810101110”。 只有在输入字段中有数字并且仅适用于所有字符时才会发生(出错)。但是,当我将名为 hex 的数组更改为 String 类型时,它会给出确切的答案。

是因为编译器将整数数组中的数字视为某种形式的八进制数还是因为其他原因?

最佳答案

0010 这样的数字被解释为八进制数。写0010和写8是一样的。

您可以使用 Integer.binaryString 转换为二进制字符串。

关于java - 为什么我得到错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10151379/

相关文章:

java - 将 TemporalTableFunction 注册为函数时出现编译器错误

arrays - 如何在 Swift 中的特定索引处获取和设置字符串的字符

Python - 仅在忽略大小写的字符串中计算字母数量

python - 在 Python 中将 STDOUT 十六进制输出转换为字符串

c# - Int64.MinValue 的十六进制文字

java - Wireshark捕获数据包但JAVA应用程序不捕获

java - 面板内命令按钮的问题

c - 为什么这个简单的C程序无法运行?

ios - 如何将 RGB 颜色转换为 HTML 颜色?

java - 如何在 Java 中使用泛型和 Class<T> 类