Javaで、ASCIIコード([0、255]の範囲の整数)を対応するASCII文字に変換するにはどうすればよいですか?
例えば:
65 -> "A"
102 -> "f"
Javaで、ASCIIコード([0、255]の範囲の整数)を対応するASCII文字に変換するにはどうすればよいですか?
例えば:
65 -> "A"
102 -> "f"
回答:
Character.toString(char)
、stackoverflow.com/a/6210938/923560は、追加のソリューションを提供しています。
(char)
指定の理由は何ですか?言い換えれば、なぜ私は単に置くことができないのCharacter.toString(i);
ですか?(Java noob)
Integer
タイプでは機能しないことに注意してください。「java.lang.Integerをjava.lang.Characterにキャストできません」というエラーが発生します。int
最初にキャストを追加します。例: Character.toString((char)(int)myInteger);
i
値(0〜255)は、ISO-8859-1文字セットからだろう。(質問者は、この回答を受け入れることを除いて、どの「拡張ASCII」[曖昧な用語]が必要かを特定することを拒否しました。)
System.out.println((char)65);
「A」を出力します
(char) 65
するだけで、その文字が何であるかがわかります。
String.valueOf
(
Character.toChars(int)
)
あなたが言うように、整数が0から255の間であると仮定すると、から単一の文字を含む配列が返されCharacter.toChars
、に渡されると単一の文字列になりString.valueOf
ます。
Character.toChars
からのキャストを含むメソッドよりint
もchar
((char) i
)を使用する方が望ましいです。これには、キャストがエラーを飲み込んでいる間に整数を適切に検証できなかっCharacter.toChars
たIllegalArgumentException
場合にスローされます(ナロープリミティブ変換の仕様に従って)。意図したもの以外の出力。
toChars
。
Character.toString((char) i)
がよりも速いということは完全に正しいですString.valueOf(Character.toChars(i))
。私のマシンで、指定された範囲(安全のために100回)で1,000,000のランダムな整数を変換するクイックベンチマークを実行すると、平均時間は152.37ナノ秒であるのに対し、862.39ナノ秒です。ただし、興味深いアプリケーションでは、最適化するためのはるかに重要なものが存在します。安全で確定的な処理の付加価値と、[0,255]の範囲外への拡張の容易さは、パフォーマンスのマイナーヒットよりも重要です。
同じことを行う簡単な方法:
型を整数に文字にキャストし、整数とするint n
と、次のようになります。
Char c=(char)n;
System.out.print(c)//char c will store the converted value.
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);
これは、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);
}
}
}
問題の解決の近くでのみ上限の答え。あなたの答えはここにあります:
Integer.decode(Character.toString(char c));