2016-08-18 22 views
2

キャストを使用して16進数から10進数に変換する練習が見つかりましたが、その方法は理解できませんでした。decimal + 'A' - 10誰も私を説明できますか?キャストを使用して16進数から16進数に変換する

コードはここにある:

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

'char'自体が' int'を表します。 'char' +' int'を実行することによって 'char'または' int'を得ることができます – SomeJavaGuy

+1

あなたはそれを理解しようとしました。あなたはアスキーテーブルを見て、ここで何が起こっているのか見てみましたか? – ChiefTwoPencils

+1

教授や助手に援助を依頼してみませんか?それは文字通り彼らの仕事です。それを説明することはまた、あなたがこのコードを提示したときにあなたが理解することを期待していたかもしれない他のコンセプトをあなたが理解できなかったことにも役立ちます。言い換えれば、私たちは本当に機械的な答のみを提供することができます。あなたの教授は、あなたが何から学んだり、あなたがこれから学ぶことを望んでいるかを学ぶのを助けるより良い立場にあります。 – yshavit

答えて

0

Unicodeでアルファベット文字が持つシーケンシャルコード:

 
A = 65 
B = 66 
C = 67 
D = 68 
... 

したがって、(char)('A'+1)の値がchar'A'次に、演算式で使用する場合65として解釈され、のように、'B'と同じです+1はそれを66にし、それを再びcharとしてキャストします。それは'B'です。

だから、'A'にはdecimalと10(0〜5)の差を加えた値があります。これにより、計算すると'A' + 0,'A' + 1'A' + 2などの値が得られます。これはそれぞれ'A''B''C'を意味します。

0

各charには整数値が関連付けられています。したがって、int(char)へのキャストはchar値になります。

関連する問題