在int中将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,我该怎么办?

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

将打印出ASCII值为1的字符(开始标题字符,这是不可打印的)。

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

将打印出ascii值为49的字符(对应于'1')

如果你想转换一个数字(0-9),你可以添加48和它,或者像Character.forDigit(a, 10);

如果你想以ascii值的forms转换一个int ,你可以使用Character.toChars(48)

我的答案与jh314的答案类似,但我会更深入地解释一下。

在这种情况下你应该做的是:

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

在这里,我们使用了'0',因为字符实际上是由ASCII值表示的。 “0”是一个字符,以48的值表示。

我们input了(a +'0'),为了增加这些,Java将'0'转换为它的ASCII值48,a是1,所以总和是49.然后我们做的是:

 (char)(49) 

我们铸造int到char。 等于49的ASCII码是'1'。 你可以用这种方法将任何数字转换为char,比使用.toString()方法,然后通过.charAt()方法减去数字更聪明,更好。

看来你正在寻找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您还可以支持hex(基数16)和任何基数达36(或Character.MAX_RADIX因为它也被称为)。

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

有了这个你得到的十进制值作为字符types。 我用索引0 charAt(),因为该string的唯一值是'一个',如你所知,在该string'a'的位置从0开始。

对不起,如果我的英文不好解释,希望它可以帮助你。

没有人在这里回答真正的“问题”:你正确地将int转换为char; 在ASCII表中,01的十进制值是“开始标题”,一个非打印字符。 尝试查找一个ASCII表,并转换33和7E之间的int值; 那会给你看angular色

在Java中,char 一个int。 您的第一个片段将打印出默认字符编码scheme(可能是Unicode)中对应于值1的字符。 Unicode字符U + 0001是一个非打印字符,这就是为什么你看不到任何输出。

如果要打印出字符“1”,则可以在所使用的编码scheme中查找“1”的值。 在Unicode中,这是49(与ASCII相同)。 但是这只适用于数字0-9。

使用String而不是char,使用Java内置的toString()方法可能会更好:

 int a = 1; String b = toString(a); System.out.println(b); 

这将工作,无论你的系统编码是什么,并将工作多位数字。

每当你把types转换为char时,它会返回那个int的ascii值(为了更好的理解,一次通过ascii表)

  int a=68; char b=(char)a; System.out.println(b);//it will return ascii value of 68 //output- D 

如果你想打印ascii字符基于他们的ascii代码,并不想超越(如unicode字符),你可以定义你的variables为一个字节,然后使用(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

如果你想将一个字符转换为相应的整数,你可以这样做:

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

发生这种情况是因为在ASCII中有一些项目不能正常打印。

例如,数字97到122是对应于小写字母a到z的整数。