Java
Java ASCII
승모근뭉치
2023. 1. 20. 23:24
프로젝트 내 src 내 javabasic 패키지 내 Ex10DataType.java
package javabasic;
public class Ex10DataType {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c1 = 'A';// 문자
char c2 = 65;// 10진
char c3 = 0x41;// 16진
char c4 = 0101;// 8진
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
char a1 = 'x';
char a2 = 120;
char a3 = 0x78;
char a4 = 0170;
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
char b1 = 'E';
char b2 = 69;
char b3 = 0x45;
char b4 = 0105;
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
}
}
A
A
A
A
x
x
x
x
E
E
E
E
이해가 안돼서 찾는데 시간이 좀 걸렸다.
10진수(decimal)를 ASCII로,
16진수(hexadecimal)를 ASCII로,
8진수(octal)를 ASCII로 변환하는 것이다.
16진수는 숫자 앞에 0x 를 붙인다.
위에서 보면 변수 c4에는 8진수를 대입해 줄 것인데
십진수 65을 8진수로 나타내려면
65를 8로 계속 나눠줘야 한다.
그런데 나는 65를 8로 나눌 때 몫이 0 이 될 때가지 안나누고
몫이 1 이 될 때 까지만 나눈 걸 생각했다.
0101 을 보면 (1 * 8^0) + (0 * 8^1) + (1 * 8^2) = 1 + 0 + 64 = 65 가 나와서 101 이 맞는 거 아닌가 생각해서
char c4 = 0101; 대신에 char c4 = 101;
로 고쳐서 Run 했더니
101 십진수라 소문자 e 가 출력되엇다.
복잡하니 8진수는 숫자 앞에 0 을 붙여준다고 생각하자.
참고로, 2진수는 숫자 앞에 0B 나 0b 를 붙여준다고 한다..
다음은 ASCII table 이다.