Java の Long 型を 16 進数文字列に変換する toHexString メソッド

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、JavaのtoHexString()メソッドの使い方を学びます。このメソッドは、符号なしのlong型として渡された値の16進数相当を返します。toHexString()メソッドの使い方、そのパラメータ、および戻り値の型について学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/variables("Variables") java/BasicSyntaxGroup -.-> java/while_loop("While Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/operators -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/variables -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/while_loop -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/output -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/classes_objects -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/user_input -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/exceptions -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/math_methods -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} java/string_methods -.-> lab-117922{{"Java の Long 型を 16 進数文字列に変換する toHexString メソッド"}} end

Javaクラスを作成する

ターミナルを開き、次のコマンドを使ってLongToHexadecimalという名前の新しいJavaクラスを作成します。

touch LongToHexadecimal.java

LongToHexadecimal.javaファイルをテキストエディタで開きます。

メインメソッドを記述する

次のコードを貼り付けてメインメソッドを定義します。

public class LongToHexadecimal {
    public static void main(String[] args){
        // ここにコードを記述します
    }
}

正のlong型を16進数に変換する

次に、toHexString()メソッドを使って正のlong型を16進数に変換します。

mainメソッドの中に次のコードを追加して、long型の値60Lをその16進数に相当するものに変換します。

long i = 60L;
System.out.println("Actual number is = " + i);
System.out.println("Hexadecimal equivalent is = " + Long.toHexString(i)); //16進数の基数16でのlong型の値を文字列として返す

次のコマンドを使ってターミナルでプログラムをコンパイルして実行します。

javac LongToHexadecimal.java && java LongToHexadecimal

次の出力が表示されるはずです。

Actual number is = 60
Hexadecimal equivalent is = 3c

負のlong型を16進数に変換する

次に、toHexString()メソッドを使って負のlong型を16進数に変換します。

mainメソッドの中に次のコードを追加して、long型の値-52Lをその16進数に相当するものに変換します。

long j = -52L;
System.out.println("Actual number is = " + j);
System.out.println("Hexadecimal equivalent is = " + Long.toHexString(j)); //16進数の基数16でのlong型の値を文字列として返す

次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。

javac LongToHexadecimal.java && java LongToHexadecimal

次の出力が表示されるはずです。

Actual number is = -52
Hexadecimal equivalent is = ffffffffffffffcc

ユーザーからの入力long型を受け取る

次に、プログラムを修正してユーザーからの入力を受け取るようにします。

mainメソッドの中に次のコードを追加して、ユーザーからのlong型の入力を読み取り、それを16進数に相当するものに変換します。

Scanner sc = new Scanner(System.in);
System.out.print("Enter the Number = ");
long k = sc.nextLong();
System.out.println("Actual Number is  = " + k);
System.out.println("Hexadecimal representation is = " + Long.toHexString(k)); //16進数の基数16でのlong型の値を文字列として返す

次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。

javac LongToHexadecimal.java && java LongToHexadecimal

次のような出力が表示されるはずです。

Enter the Number = 585
Actual Number is  = 585
Hexadecimal representation is = 249

無効な入力を処理する

次に、無効な入力を処理するコードを追加します。

mainメソッド内の既存のコードを変更して、入力例外をキャッチするようにします。

Scanner sc = new Scanner(System.in);
try {
    System.out.print("Enter the Number = ");
    long k = sc.nextLong();
    System.out.println("Actual Number is  = " + k);
    System.out.println("Hexadecimal representation is = " + Long.toHexString(k)); //16進数の基数16でのlong型の値を文字列として返す
} catch (InputMismatchException ex) {
    System.out.println("Invalid input! Please enter a valid long value.");
}

次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。

javac LongToHexadecimal.java && java LongToHexadecimal

次のような出力が表示されるはずです。

Enter the Number = abc
Invalid input! Please enter a valid long value.

ループを追加する

次に、ユーザーがプログラムを終了するまで、ユーザーからの入力を受け付けるようにプログラムを修正します。

mainメソッドの中に次のコードを追加して、ユーザーが終了するまでプログラムを実行し続けます。

Scanner sc = new Scanner(System.in);
while (true) {
    System.out.print("Enter the Number (or -1 to quit) = ");
    long k = sc.nextLong();
    if (k == -1) {
        System.out.println("Goodbye!");
        break;
    }
    System.out.println("Actual Number is  = " + k);
    System.out.println("Hexadecimal representation is = " + Long.toHexString(k)); //16進数の基数16でのlong型の値を文字列として返す
}

次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。

javac LongToHexadecimal.java && java LongToHexadecimal

次のような出力が表示されるはずです。

Enter the Number (or -1 to quit) = 456
Actual Number is  = 456
Hexadecimal representation is = 1c8
Enter the Number (or -1 to quit) = -999
Actual Number is  = -999
Hexadecimal representation is = fffffffffffffc19
Enter the Number (or -1 to quit) = 754
Actual Number is  = 754
Hexadecimal representation is = 2f2
Enter the Number (or -1 to quit) = -1
Goodbye!

エッジケースをテストする

最後に、入力数がlong型で表現できる最大値と最小値であるエッジケースをテストします。

mainメソッドのwhileループの中に次のコードを追加します。

System.out.println("Actual Number is  = " + Long.MAX_VALUE);
System.out.println("Hexadecimal representation is = " + Long.toHexString(Long.MAX_VALUE)); //16進数の基数16でのlong型の値を文字列として返す
System.out.println("Actual Number is  = " + Long.MIN_VALUE);
System.out.println("Hexadecimal representation is = " + Long.toHexString(Long.MIN_VALUE)); //16進数の基数16でのlong型の値を文字列として返す

次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。

javac LongToHexadecimal.java && java LongToHexadecimal

次のような出力が表示されるはずです。

Enter the Number (or -1 to quit) = 9223372036854775807
Actual Number is  = 9223372036854775807
Hexadecimal representation is = 7fffffffffffffff
Actual Number is  = -9223372036854775808
Hexadecimal representation is = 8000000000000000
Enter the Number (or -1 to quit) = -1
Goodbye!

まとめ

この実験では、JavaのtoHexString()メソッドを使ってlong型の値を16進数に変換する方法を学びました。ユーザーからの入力の読み取り、ユーザー入力例外の処理、およびユーザーが明示的に終了するまでプログラムを実行し続けるためのループの使用を練習しました。これらのプログラミング概念を使って、long型の値を操作しユーザー入力を受け付けるより複雑なJavaアプリケーションを構築することができます。