ASCIIコード(0-255)を対応する文字に変換する方法は?


135

Javaで、ASCIIコード([0、255]の範囲の整数)を対応するASCII文字に変換するにはどうすればよいですか?

例えば:

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

3
上記のようにこれは重複ではありません。これは整数からの変換ではなく、char(ascii)からの変換です
Chathuranga Chandrasekara

11
「intからStringに変換する方法」の複製ではありません ...とにかく、FWIW、ASCIIは7ビットのみで、値は[

1
@phoojiその投稿は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」[曖昧な用語]が必要かを特定することを拒否しました。)
Tom Blodget 2017年

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.toCharsIllegalArgumentException場合にスローされます(ナロープリミティブ変換の仕様に従って)。意図したもの以外の出力。


整数が0から255の範囲内であると仮定すると(あなたが行うように述べ、そして質問が指定するように)、それを使用することは不必要であり、最適ではありませんtoChars
スティーブンC

5
あなたはのようなものCharacter.toString((char) i)がよりも速いということは完全に正しいですString.valueOf(Character.toChars(i))。私のマシンで、指定された範囲(安全のために100回)で1,000,000のランダムな整数を変換するクイックベンチマークを実行すると、平均時間は152.37ナノ秒であるのに対し、862.39ナノ秒です。ただし、興味深いアプリケーションでは、最適化するためのはるかに重要なものが存在します。安全で確定的な処理の付加価値と、[0,255]の範囲外への拡張の容易さは、パフォーマンスのマイナーヒットよりも重要です。
zjs

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

それは簡単な解決策です


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

結果として、長さが1の文字列になり、その1文字は(ASCII)コード65になります。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 2017年

0

アスキー文字を返すメソッドに単純化しないのはなぜですか?

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);
        }
    }
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.