以下はコードスニペットです。
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);
Unicode コード ポイント1の char を出力します(見出しの開始文字、これは印刷できません。次の表を参照してください: C0 コントロールと基本ラテン語、ASCII と同じ)
int a = '1';
char b = (char) a;
System.out.println(b);
Unicodeコードポイント49(「1」に対応するもの)の文字を出力します
数字 (0 ~ 9) を変換する場合は、それに 48 を追加してキャストするか、Character.forDigit(a, 10);
.
int
Unicode コード ポイントとして表示されるを変換する場合はCharacter.toChars(48)
、たとえば を使用できます。
int a = 1;
char b = (char) (a + 48);
ASCII では、すべての文字に独自の番号があります。また、char '0' は 10 進数の 48、'1' は 49 などです。だからもし
char b = '2';
int a = b = 50;
キャスト整数をcharに入力すると、そのintのASCII値が返されます(理解を深めるためにASCIIテーブルを確認してください)
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
ここで本当の「質問」に答えた人は誰もいません。int を char に正しく変換しています。ASCII テーブルでは、10 進数値 01 は「見出しの開始」であり、非印刷文字です。ASCII テーブルを調べて、int 値を 33 から 7E の間で変換してみてください。それはあなたに見るべきキャラクターを与えるでしょう。
整数値がアルファベット/文字の ASCII 値であることを確認してください。
そうでない場合は、それを作成します。
for e.g. if int i=1
次に 64 を足して 65 = 'A' の ASCII 値 次に使用
char x = (char)i;
print x
// 'A' will be printed
Java では、charはint です。最初のスニペットは、デフォルトの文字エンコード方式 (おそらく Unicode) の値 1 に対応する文字を出力します。Unicode 文字 U+0001 は非印刷文字であるため、出力が表示されません。
文字「1」を出力したい場合は、使用しているエンコード方式で「1」の値を調べることができます。Unicode では、これは 49 です (ASCII と同じ)。ただし、これは 0 ~ 9 の数字に対してのみ機能します。
char ではなく String を使用し、Java の組み込みtoString()
メソッドを使用する方がよい場合があります。
int a = 1;
String b = toString(a);
System.out.println(b);
これは、システムのエンコーディングが何であれ機能し、複数桁の数字に対して機能します。
ASCII コードに基づいて ASCII 文字を出力したいが、それ以上 (Unicode 文字のように) したくない場合は、変数をバイトとして定義してから、(char) 変換を使用できます。すなわち:
public static void main(String[] args) {
byte b = 65;
for (byte i=b; i<=b+25; i++) {
System.out.print((char)i + ", ");
}
ところで、文字「A」のASCIIコードは65です