gpt4 book ai didi

java - 不使用 .parseInt() 将十六进制转换为十进制;

转载 作者:行者123 更新时间:2023-12-01 18:32:51 26 4
gpt4 key购买 nike

我正在编写一些从十六进制转换为十进制的代码,而不使用内置的 java 函数,如 Integer.parseInt( n, 16);

这是我所做的,但它不起作用:

    public static int hexToDecimal(String hexInput) {
String hexIn = hexInput.replace("", " ").trim();
Scanner hex = new Scanner(hexIn);
int decimal = 0;
int power = 1;

while (hex.hasNext() == true) {
String temp = hex.next();

if (temp.equals("1") == true) {
decimal += 1 * power;
} else if (temp.equals("2") == true) {
decimal += 2 * power;
} else if (temp.equals("3") == true) {
decimal += 3 * power;
} else if (temp.equals("4") == true) {
decimal += 4 * power;
} else if (temp.equals("5") == true) {
decimal += 5 * power;
} else if (temp.equals("6") == true) {
decimal += 6 * power;
} else if (temp.equals("7") == true) {
decimal += 7 * power;
} else if (temp.equals("8") == true) {
decimal += 8 * power;
} else if (temp.equals("9") == true) {
decimal += 9 * power;
} else if (temp.equals("A") == true) {
decimal += 10 * power;
} else if (temp.equals("B") == true) {
decimal += 11 * power;
} else if (temp.equals("C") == true) {
decimal += 12 * power;
} else if (temp.equals("D") == true) {
decimal += 13 * power;
} else if (temp.equals("E") == true) {
decimal += 14 * power;
} else if (temp.equals("F") == true) {
decimal += 15 * power;
}
power = power * 16;
}

System.out.println(decimal);
return decimal;
}

我可以帮忙吗?看起来它有一些基本功能,但它会破坏大多数输入。感谢您的帮助!

最佳答案

当您向右扫描时,您将乘以逐渐增大的 16 次幂。这与您想要的完全相反。请尝试使用此逻辑,这比您现在正在执行的操作要简单一些:

public static int hexToDecimal(String hexInput) {
int decimal = 0;
int len = hexInput.length();

for (int i = 0; i < len; ++i) {
char c = hexInput.charAt(i);
int cValue;

switch (c) {
case '1':
cValue = 1;
break;
case '2':
cValue = 2;
break;
. . .
default: // unexpected character
throw new IllegalArgumentException("Non-hex character " + c
+ " found at position " + i);
}
decimal = 16 * decimal + cValue;
}
return decimal;
}

它会像您现在所做的那样从左到右扫描,对于遇到的每个新的十六进制数字,将已处理的值乘以 16。

关于java - 不使用 .parseInt() 将十六进制转换为十进制;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350492/

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