gpt4 book ai didi

java - java中十六进制转十进制

转载 作者:行者123 更新时间:2023-12-02 10:45:57 25 4
gpt4 key购买 nike

我一直在编写一个将十六进制数转换为十进制数并返回的程序。我一整天都被这个问题困扰了。我有以下代码:

    for (String element: list) {
double number = 0;
int i=0;
while(i<element.length()) {
char character = element.charAt(i);
if (character=='A' | character== 'a') {
int a= (int) (10*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character== 'B' | character =='b') {
int a= (int) (11*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character== 'C' | character =='c') {
int a= (int) (12*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character== 'D' | character =='d') {
int a= (int) (13*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character== 'E' | character =='e') {
int a= (int) (14*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character== 'F' | character =='f') {
int a= (int) (15*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {

if (character =='1') {
int a= (int) (1*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character =='2') {
int a= (int) (2*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {

if (character =='3') {
int a= (int) (3*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character =='4') {
int a= (int) (4*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character =='5') {
int a= (int) (5*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character =='6') {
int a= (int) (6*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character =='7') {
int a= (int) (7*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character =='8') {
int a= (int) (8*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character=='9') {
int a= (int) (9*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
else {
if (character =='0') {
int a= (int) (0*(Math.pow((element.length()-(i+1)), 16)));
number= number+a;
}
}}}}}}}}}}}}}}}
i++;
}

我知道它很大而且很蠢。我面临的问题是,当我运行它并输入像 AAA 这样的数字时,它会抛出 A000A 十六进制的值。或者如果我输入 123,它会抛出十六进制的 10002 值。预先感谢您的帮助。

最佳答案

您的任务是自己实现还是只需要一个转换器?如果你只需要转换器,你可以这样做 Integer.parseInt("a",16)

已编辑:一般建议为了使您的代码更具可读性,我建议在类内创建私有(private)静态映射,如下所示:

    private static final Map<Character, Integer> dictionary = new HashMap<Character, Integer>();
static {
myMap.put("A", 10);
myMap.put("B", 11);
//other code
}

因此您将能够摆脱代码重复:

   Integer multiplier = dictionary.get(Character.toUpperCase(character))
if(multiplier == null){/* do something */}
int a= (int) (multiplier*(Math.pow(16, (element.length()-(i+1)))));
number= number+a;

关于java - java中十六进制转十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52573431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com