我找到了一个使用强制转换从十六进制转换为十进制的练习,但我不明白decimal + 'A' - 10
是如何工作的。有人可以解释一下吗?
代码在这里:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter a decimal value (0-15):");
int decimal = input.nextInt();
if (decimal <= 9 && decimal >= 0) {
System.out.println("The hex value is: " + decimal);
}
else if (decimal >= 10 && decimal <= 15) {
System.out.println("The hex value is " + (char)(decimal + 'A' - 10));
}
else {
System.out.println("It's an invalid input.");
}
}
}
感谢。
答案 0 :(得分:0)
每个char都有与之关联的整数值。因此,将int转换为(char)将产生char值。
答案 1 :(得分:0)
Unicode中的字母字符具有顺序代码:
A = 65 B = 66 C = 67 D = 68 ...
因此,(char)('A'+1)
的值与'B'
相同,因为char
值'A'
在算术表达式中使用时被解释为65,然后+1使其成为66,然后再将其作为字符再次投射,它是'B'
。
那么你所拥有的是'A'
的值加上decimal
和10之间的差异(从0到5)。这将为您提供值'A' + 0
,'A' + 1
,'A' + 2
等,在您计算时分别为'A'
,'B'
,'C'
。