ASCII 코드 (0-255)를 해당 문자로 변환하는 방법은 무엇입니까?


135

Java에서 ASCII 코드 ([0, 255] 범위의 정수)를 해당 ASCII 문자로 변환하려면 어떻게해야합니까?

예를 들면 다음과 같습니다.

65  -> "A"
102 -> "f"

3
이것은 위에서 언급 한 것처럼 중복되지 않습니다. 이것은 (ASCII) 정수에서하지만, 문자의 변환되지 않습니다
Chathuranga Chandrasekara

11
"int에서 문자열로 변환하는 방법?"의 복제본이 아닙니다 . 어쨌든 FWIW, ASCII는 [0, 127] 값을 가진 7 비트입니다. ;-)

1
@phooji 그 게시물 sais 1-> "1"등을 변환하는 방법 생각
Belgi

1
@pst-그것은 확장 ASII ;-)
Belgi

3
@Belgi-값을 128-255로 올바르게 트랜스 코딩하려면 인코딩을 명시 적으로 명시해야합니다. "확장 ASCII"라는 용어는 의미가 없습니다.
McDowell

답변:


244

MIDP 2의 / CLDC 1.1이없는 플랫폼 (기반 Character.toString(char), stackoverflow.com/a/6210938/923560은 추가 솔루션을 제공합니다.
Abdull

(char)지정 사유는 무엇입니까 ? 다시 말해, 왜 그냥 넣을 수 Character.toString(i);없습니까? (Java noob)
Adam Hughes

1
Integer유형 에는 작동하지 않습니다 . "java.lang.Integer를 java.lang.Character로 캐스트 할 수 없습니다"오류가 발생합니다. int먼저 캐스트 추가 : 예 : Character.toString((char)(int)myInteger);
gbmhunter

1
i값 (0-255)는 ISO-8859-1 문자 세트에서 것이다. (질문 아스 커는이 대답을 수락함으로써 제외하고 싶었다 된 "확장 ASCII"[모호한 용어] 확인을 거부했다.)
톰 블로 젯

59

System.out.println((char)65); "A"를 인쇄합니다


2
REPL 팁 : JShell (Java 9)을 사용하는 경우 System.out을 생략 할 수 있습니다. (char) 65어떤 문자인지 알아 보려면 입력 하십시오.
DavidS

2
질문은 인쇄가 아니라 변환에 관한 것입니다.
iAmLearning

29

String.valueOf(Character.toChars(int))

정수가 0에서 255 사이라고 가정하면에서 단일 문자가있는 배열을 얻을 수 있습니다.이 배열은로 Character.toChars전달 될 때 단일 문자 문자열이됩니다 String.valueOf.

사용하여 Character.toChars에서 깁스를 포함하는 방법에 바람직하다 intchar(즉, (char) i여러 가지 이유로)이 포함 Character.toChars을 던질 것이다 IllegalArgumentException당신이 캐스트가 (당 오류를 삼켜 동안 제대로 정수를 확인하지 않을 경우 로우 원시적 변환 사양 ) 잠재적으로 제공 의도 한 것과 다른 출력.


정수가 0에서 255 사이의 범위에 있다고 가정하면 (당신이 말한대로 ... 질문과 같이) 불필요하고 차선책 toChars입니다.
Stephen C

5
와 같은 Character.toString((char) i)것이보다 빠르다는 것이 완전히 정확합니다 String.valueOf(Character.toChars(i)). 내 컴퓨터에서 주어진 범위 (100 회, 안전하기 위해)에서 1,000,000 개의 임의 정수를 변환하는 빠른 벤치 마크를 실행하면 평균 시간이 153.07 나노 초 대 862.39 나노 초입니다. 그러나 흥미로운 응용 프로그램에는 최적화해야 할 것이 훨씬 더 중요합니다. 안전하고 결정적인 처리의 부가가치가 필요한 경우 [0,255] 범위를 벗어나 확장하기가 쉽지만 성능 저하가 적습니다.
zjs

8
int number = 65;
char c = (char)number;

간단한 해결책입니다


4
    new String(new char[] { 65 })

단일 문자는 (ASCII) 코드 65를 갖는 길이가 1 인 문자열로 끝납니다. Java 문자는 숫자 데이터 유형입니다.


1

이처럼 a에서 z까지 반복 할 수 있습니다.

int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
    search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}

1

더 쉬운 방법 :

캐스트 정수를 문자로 입력 int n하고 정수로 설정 한 후 다음을 수행하십시오.

Char c=(char)n;
System.out.print(c)//char c will store the converted value.

0
    for (int i = 0; i < 256; i++) {
        System.out.println(i + " -> " + (char) i);
    }

    char lowercase = 'f';
    int offset = (int) 'a' - (int) 'A';
    char uppercase = (char) ((int) lowercase - offset);
    System.out.println("The uppercase letter is " + uppercase);

    String numberString = JOptionPane.showInputDialog(null,
            "Enter an ASCII code:",
            "ASCII conversion", JOptionPane.QUESTION_MESSAGE);

    int code = (int) numberString.charAt(0);
    System.out.println("The character for ASCII code "
            + code + " is " + (char) code);

답을 알려주십시오
want2learn at

0

ASCII 문자를 반환하는 메소드로 단순화하지 않겠습니까?

public char toAscii (int input) {
    return (char)input;
}

-1

이것은 int를 char로 변환함으로써 해당 문자를 ASCII 코드로 결정할 수 있음을 보여주는 예입니다.

public class sample6
{
    public static void main(String... asf)
    {

        for(int i =0; i<256; i++)
        {
            System.out.println( i + ". " + (char)i);
        }
    }
}

-1

위의 답변은 문제 해결 근처에만 있습니다. 여기 당신의 대답 :

정수. 코드 (Character.toString (char c));

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.