155

以下はコードスニペットです。

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 に変換したい場合、どうすればよいでしょうか?

4

17 に答える 17

131
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);.

intUnicode コード ポイントとして表示されるを変換する場合はCharacter.toChars(48)、たとえば を使用できます。

于 2013-08-01T03:52:38.493 に答える
4
int a = 1;
char b = (char) (a + 48);

ASCII では、すべての文字に独自の番号があります。また、char '0' は 10 進数の 48、'1' は 49 などです。だからもし

char b = '2';
int a = b = 50;
于 2018-11-02T16:59:54.383 に答える
2

キャスト整数をcharに入力すると、そのintのASCII値が返されます(理解を深めるためにASCIIテーブルを確認してください)

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

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

    //output- D
于 2016-12-29T05:02:58.210 に答える
1

ここで本当の「質問」に答えた人は誰もいません。int を char に正しく変換しています。ASCII テーブルでは、10 進数値 01 は「見出しの開始」であり、非印刷文字です。ASCII テーブルを調べて、int 値を 33 から 7E の間で変換してみてください。それはあなたに見るべきキャラクターを与えるでしょう。

于 2016-09-12T17:28:51.703 に答える
0

整数値がアルファベット/文字の ASCII 値であることを確認してください。

そうでない場合は、それを作成します。

for e.g. if int i=1

次に 64 を足して 65 = 'A' の ASCII 値 次に使用

char x = (char)i;

print x

// 'A' will be printed 
于 2018-02-20T19:12:25.077 に答える
0

Java では、charint です。最初のスニペットは、デフォルトの文字エンコード方式 (おそらく 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);

これは、システムのエンコーディングが何であれ機能し、複数桁の数字に対して機能します。

于 2013-08-01T04:42:39.600 に答える
0

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です

于 2017-06-29T14:15:09.160 に答える