首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在java中将int转换为char

在java中将int转换为char
EN

Stack Overflow用户
提问于 2013-08-01 11:51:15
回答 14查看 696.5K关注 0票数 152

下面是一个代码片段,

代码语言:javascript
复制
int a = 1;
char b = (char) a;
System.out.println(b);

但我得到的是空输出。

代码语言:javascript
复制
int a = '1';
char b = (char) a;
System.out.println(b);

我将得到1作为我的输出。

有人能解释一下吗?如果我想像第一个代码片段中那样将int转换为char,我应该怎么做?

EN

回答 14

Stack Overflow用户

发布于 2013-08-01 11:52:38

代码语言:javascript
复制
int a = 1;
char b = (char) a;
System.out.println(b);

将打印出带有ASCII1的字符(标题开头的字符,这是不可打印的;见下表:C0 Controls and Basic Latin,与Unicode code point相同)

代码语言:javascript
复制
int a = '1';
char b = (char) a;
System.out.println(b);

将打印带有Unicode代码点49的字符(一个对应于'1')

如果你想转换一个数字(0-9),你可以在上面加上48,然后进行转换,或者像Character.forDigit(a, 10);这样的东西。

如果您希望转换被视为Unicode代码点的int,则可以使用Character.toChars(48)

票数 128
EN

Stack Overflow用户

发布于 2015-06-05 05:05:41

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

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

代码语言:javascript
复制
int a = 1;
char b = (char)(a + '0');
System.out.println(b);

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

我们输入(a + '0'),为了将它们相加,Java将'0‘转换成它的ASCII值,它是48,a是1,所以和是49。然后我们所做的是:

代码语言:javascript
复制
(char)(49)

我们将int转换为char。49的ASCII等价物是'1‘。您可以通过这种方式将任何数字转换为字符,这比使用.toString()方法,然后用.charAt()方法减去数字更智能和更好。

票数 74
EN

Stack Overflow用户

发布于 2015-10-09 14:51:52

看起来您正在寻找Character.forDigit方法:

代码语言:javascript
复制
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

还有一个方法可以从char转换回int:

代码语言:javascript
复制
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

请注意,通过更改RADIX,您还可以支持十六进制(基数16)和最大36的任何基数(或Character.MAX_RADIX,因为它也被称为)。

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17984975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档