staticvoidcardConvR(int x, int r){
char []d = newchar[32];
int digits = 0; //변환된 진수의 자릿수를 저장
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
do {
d[digits++] = dchar.charAt(x % r); // r로 나눈 나머지를 저장
x /= r;
} while (x != 0);
for(int i = digits-1; i>=0; i--) System.out.print(d[i]);
}
설명
위와 같은 결과로 이루어진 배열을 역순으로 출력하면 진수변환이 되는 것이다.
문자 추출 charAt() 메소드 charAt() 메소드는 매개값으로 주어진 인덱스의 문자를 리턴한다. dchar.charAt(x % r)에서 x는 59 r이 16이라고 가정하면 59를 16로 나눈 후 나머지는 11이다 dchar배열의 인덱스 11은 B이므로 B가 리턴된다.
실행 예제
import java.util.Scanner;
publicclassMain{
staticvoidcardConvR(int x, int r){
char []d = newchar[32];
int digits = 0; //변환된 진수의 자릿수를 저장
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
do {
d[digits++] = dchar.charAt(x % r); // r로 나눈 나머지를 저장
x /= r;
} while (x != 0);
for(int i = digits-1; i>=0; i--) System.out.print(d[i]);
}
publicstaticvoidmain(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("변환할 정수 입력 : ");
int num = sc.nextInt();
System.out.print("진수 입력 : ");
int n = sc.nextInt();
cardConvR(num,n);
}
}
/*
변환할 정수 입력 : 59
진수 입력 : 2
111011
*/