web-dev-qa-db-ja.com

Javaでintをcharに変換する

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

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に変換したい場合はどうすればいいですか。

99
user2640480
int a = 1;
char b = (char) a;
System.out.println(b);

aSCII値1で文字を表示します(先頭文字のchar、これは印刷できません)。

int a = '1';
char b = (char) a;
System.out.println(b);

アスキー値49( '1'に対応するもの)で文字をプリントします

数字(0-9)を変換したい場合は、48を足してキャストするか、またはCharacter.forDigit(a, 10);のようなものを使用できます。

intをasciiの値のように変換したい場合は、例えばCharacter.toChars(48)を使用できます。

89
jh314

私の答えはjh314の答えに似ていますが、もう少し詳しく説明します。

この場合にあなたがすべきことは次のとおりです。

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

文字は実際にはASCIIの値で表されるため、ここでは '0'を使用しました。 '0'は文字で、48の値で表されます。

(a + '0')と入力し、これらを足し合わせるために、Javaは '0'をそのASCIIの値(48、aは1)に変換したため、合計は49になりました。

(char)(49)

intcharにキャストしました。 49のASCIIは、 '1'です。この方法で任意の数字をcharに変換でき、.toString()メソッドを使用してから.charAt()メソッドで数字を減算するよりもスマートで優れた方法です。

44
Haggra

Character.forDigitメソッドを探しているようです。

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

Charからintに変換できるメソッドもあります。

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

RADIXを変更することで、16進数(基数16)と36までの任意の基数(またはCharacter.MAX_RADIXとも呼ばれます)をサポートすることができます。

35
Simon Forsberg
int a = 1;
char b = (char) a;
System.out.println(b);

こんにちは、私は同じ問題を経験しましたが、私がしたのは次のコードでした。

int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);

これであなたはchar型としてdecimal値を取得します。そのStringへの唯一の値は 'a'であり、そのStringへの 'a'の位置は0から始まるので、私はインデックス0でcharAt()を使用しました。

私の英語がうまく説明されていない場合は申し訳ありませんが、お役に立てば幸いです。

9
3ryck
int a = 1;
char b = (char) (a + 48);

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

char b = '2';
int a = b = 50;
1
bigpig

プリミティブではなくクラス型について話している場合は、次のトリックを実行する必要があります。

Integer someInt;
Character someChar;

someChar = (char)Integer.parseInt(String.valueOf(someInt);
1
matua

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

1
apraetor

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

0
MohS

完全な変換コンセプトについては、次のプログラムをご覧ください

class typetest{
    public static void main(String args[]){
        byte a=1,b=2;
        char c=1,d='b';
        short e=3,f=4;
        int g=5,h=6;
        float i;
        double k=10.34,l=12.45;
        System.out.println("value of char variable c="+c);
        // if we assign an integer value in char cariable it's possible as above
        // but it's not possible to assign int value from an int variable in char variable 
        // (d=g assignment gives error as incompatible type conversion)
        g=b;
        System.out.println("char to int conversion is possible");
        k=g;
        System.out.println("int to double conversion is possible");
        i=h;
        System.out.println("int to float is possible and value of i = "+i);
        l=i;
        System.out.println("float to double is possible");
    }
}

希望、それは少なくとも何かを助ける

0
Shivam Rai

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

これはあなたのシステムのエンコーディングが何であれ、うまくいくでしょうし、そして複数桁の数に対してもうまくいくでしょう。

0
david25272

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

そうでない場合はそれを作ります。

for e.g. if int i=1

それに64を足して65 = ASCII value of 'A'になる

char x = (char)i;

print x

// 'A' will be printed 
0
Mayur Gudi

Charにキャスト整数を入力するたびに、それはそのint型のASCII値を返します(理解を深めるために一度ASCIIテーブルを通過します)。

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

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

    //output- D
0
ajay verma