Java,使用强制转换

时间:2016-08-18 06:30:14

标签: java hex

我找到了一个使用强制转换从十六进制转换为十进制的练习,但我不明白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.");
         }
     }
 }

感谢。

2 个答案:

答案 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'