소개
이 랩에서는 Java 의 toHexString() 메서드를 사용하여 부호 없는 long 값으로 전달된 값의 16 진수 (hexadecimal) 표현을 얻는 방법을 배우게 됩니다. toHexString() 메서드의 사용법, 매개변수, 반환 유형에 대해 알아보겠습니다.
이 랩에서는 Java 의 toHexString() 메서드를 사용하여 부호 없는 long 값으로 전달된 값의 16 진수 (hexadecimal) 표현을 얻는 방법을 배우게 됩니다. toHexString() 메서드의 사용법, 매개변수, 반환 유형에 대해 알아보겠습니다.
터미널을 열고 다음 명령을 사용하여 LongToHexadecimal이라는 새 Java 클래스를 생성합니다.
touch LongToHexadecimal.java
텍스트 편집기에서 LongToHexadecimal.java 파일을 엽니다.
다음 코드를 붙여넣어 main 메서드를 정의합니다.
public class LongToHexadecimal {
public static void main(String[] args){
// Your code here
}
}
다음으로, toHexString() 메서드를 사용하여 양의 long 값을 16 진수로 변환합니다.
60L long 값을 16 진수 값으로 변환하기 위해 main 메서드 내에 다음 코드를 추가합니다.
long i = 60L;
System.out.println("Actual number is = " + i);
System.out.println("Hexadecimal equivalent is = " + Long.toHexString(i)); //returns the long value in hexadecimal base 16 as a string
다음 명령을 사용하여 터미널에서 프로그램을 컴파일하고 실행합니다.
javac LongToHexadecimal.java && java LongToHexadecimal
다음과 같은 출력을 볼 수 있습니다.
Actual number is = 60
Hexadecimal equivalent is = 3c
다음으로, toHexString() 메서드를 사용하여 음의 long 값을 16 진수로 변환합니다.
-52L long 값을 16 진수 값으로 변환하기 위해 main 메서드 내에 다음 코드를 추가합니다.
long j = -52L;
System.out.println("Actual number is = " + j);
System.out.println("Hexadecimal equivalent is = " + Long.toHexString(j)); //returns the long value in hexadecimal base 16 as a string
다음 명령을 사용하여 터미널에서 프로그램을 다시 컴파일하고 실행합니다.
javac LongToHexadecimal.java && java LongToHexadecimal
다음과 같은 출력을 볼 수 있습니다.
Actual number is = -52
Hexadecimal equivalent is = ffffffffffffffcc
다음으로, 사용자로부터 입력을 받도록 프로그램을 수정합니다.
사용자로부터 long 입력을 읽어 16 진수 값으로 변환하기 위해 main 메서드 내에 다음 코드를 추가합니다.
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)); //returns the long value in hexadecimal base 16 as a string
다음 명령을 사용하여 터미널에서 프로그램을 다시 컴파일하고 실행합니다.
javac LongToHexadecimal.java && java LongToHexadecimal
다음과 같은 출력을 볼 수 있습니다.
Enter the Number = 585
Actual Number is = 585
Hexadecimal representation is = 249
다음으로, 유효하지 않은 입력을 처리하는 코드를 추가합니다.
main 메서드 내의 기존 코드를 수정하여 모든 입력 예외를 catch 합니다.
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)); //returns the long value in hexadecimal base 16 as a string
} 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)); //returns the long value in hexadecimal base 16 as a string
}
다음 명령을 사용하여 터미널에서 프로그램을 다시 컴파일하고 실행합니다.
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)); //returns the long value in hexadecimal base 16 as a string
System.out.println("Actual Number is = " + Long.MIN_VALUE);
System.out.println("Hexadecimal representation is = " + Long.toHexString(Long.MIN_VALUE)); //returns the long value in hexadecimal base 16 as a string
다음 명령을 사용하여 터미널에서 프로그램을 다시 컴파일하고 실행합니다.
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 애플리케이션을 구축할 수 있습니다.