[java] 자바에서 int를 char로 변환

아래는 코드 스 니펫입니다.

int a = 1;
char b = (char) a;
System.out.println(b);

그러나 내가 얻는 것은 빈 출력입니다.

int a = '1';
char b = (char) a;
System.out.println(b);

출력으로 1을 얻습니다.

누군가 이것을 설명 할 수 있습니까? 첫 번째 스 니펫에서와 같이 int를 char로 변환하려면 어떻게해야합니까?



답변

int a = 1;
char b = (char) a;
System.out.println(b);

ascii 값 1 (인쇄 할 수없는 머리글 시작 문자)로 문자를 인쇄합니다.

int a = '1';
char b = (char) a;
System.out.println(b);

ascii 값 49 ( ‘1’에 해당하는 문자)를 인쇄합니다.

숫자 (0-9)를 변환하려면 여기에 48을 더하고 캐스트하거나 Character.forDigit(a, 10);.

intascii 값 으로 변환하려면 Character.toChars(48)예를 들어 사용할 수 있습니다 .


답변

내 대답은 jh314의 대답과 비슷하지만 조금 더 자세히 설명하겠습니다.

이 경우 수행해야 할 작업은 다음과 같습니다.

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

여기서는 문자가 실제로 ASCII 값으로 표현되기 때문에 ‘0’을 사용했습니다. ‘0’은 문자이며 값 48로 표시됩니다.

우리는 입력 (a + '0')하고 이것을 더하기 위해 Java는 ‘0’을 ASCII 값인 48로 변환하고 a는 1이므로 합계는 49입니다.

(char)(49)

로 캐스팅 int했습니다 char. 49에 해당하는 ASCII는 ‘1’입니다. 이 방법으로 모든 숫자를 char로 변환 할 수 있으며 방법을 사용한 .toString()다음 .charAt()방법으로 숫자를 빼는 것보다 더 똑똑하고 더 나은 방법입니다.


답변

당신이 찾고있는 것 같습니다 Character.forDigit방법을 .

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

char에서 int로 다시 변환 할 수있는 메서드도 있습니다.

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

를 변경하면 RADIX16 진수 (기수 16)와 최대 36 (또는 Character.MAX_RADIX라고도 함 )의 기수도 지원할 수 있습니다 .


답변

int a = 1;
char b = (char) a;
System.out.println(b);

안녕, 나는 같은 문제를 겪었지만 내가 한 일은 다음 코드였습니다.

int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);

이것으로 십진수 값을 char 유형으로 얻습니다. 문자열의 유일한 값은 ‘a’이고 아시다시피 해당 문자열의 ‘a’위치는 0에서 시작하기 때문에 인덱스 0과 함께 charAt ()을 사용했습니다.

내 영어가 잘 설명되지 않으면 죄송합니다. 도움이 되었기를 바랍니다.


답변

int a = 1;
char b = (char) (a + 48);

ASCII에서 모든 문자에는 고유 한 번호가 있습니다. 그리고 char ‘0’은 십진수 48, ‘1’은 49 등입니다. 그래서 만약

char b = '2';
int a = b = 50;


답변

아무도 여기서 진짜 “질문”에 답하지 않았습니다. 당신은 int를 char로 올바르게 변환하고 있습니다. ASCII 테이블에서 10 진수 값 01은 인쇄되지 않는 문자 인 “제목의 시작”입니다. ASCII 테이블을 찾고 33에서 7E 사이의 int 값을 변환 해보십시오. 당신이 볼 캐릭터를 줄 것입니다.


답변

char에 cast integer를 입력 할 때마다 해당 int의 ascii 값을 반환합니다 (더 나은 이해를 위해 ascii 테이블을 살펴 봅니다).

    int a=68;
    char b=(char)a;

    System.out.println(b);//it will return ascii value of 68

    //output- D