2014-03-24 77 views
-1

我正在寻找一个简单的答案,似乎无法找到一个。在Java中铸造int到char

我只是想看看下面是否有效。我想取整数7并把它变成字符'7'。这是否允许:

int digit = 7; 
char code = (char) digit; 

预先感谢您的帮助!

+1

整型是不一样的INT和性格是不一样的字符。也试试看看它是否有效。 –

+0

'(char)('0'+ digit)'将起作用 – fge

+0

这可能对您有用:http://stackoverflow.com/questions/17984975/convert-int-to-char-in-java – Thibstars

回答

2

此转换是允许的,但结果不会是你所期望的,因为char 7 is the bell character whereas '7' is 55 (0x37)。由于数字字符的顺序是从'0'480x30)开始,只需添加'0',然后将结果作为char进行投射。

char code = (char) (digit + '0'); 

您也可以看看的Unicode characters,其中可打印的ASCII字符相同的代码。

+0

Argh,为什么在有Unicode时指向ASCII而Java是Unicode呢? :p – fge

+0

看到我的答案,为什么引用ascii是imho不是一件好事 – fge

0

更容易是做

String s = "0" + digit; 
char t = s.charAt(0); 
+1

这可能不是你想做的,除非你想要每次都得到char''0'。 – Keppil

+0

'String s =“”+ digit; char t = s.charAt(0);'会工作 – andy

0

如果数字是0之间和9:

int digit = 7; 
char code = (char)(((int)'0')+digit); 
+0

不需要明确地将''0'扩展为'int'。 –

0

'7' is Unicode code point U+0037.由于它是在Basic Multiligual Plane的码点,并且由于char是一个UTF-16代码单元,并且该平面中的Unicode代码点和UTF-16代码单元之间存在一对一映射,您可以依靠这样的:

(char) ('0' + digit) 

不认为'7'为ASCII 55,因为防止char有很好的理解......欲了解更多详情,请参阅here

0

没有。该char'7'可以从int7在以下方面获得:

int digit = 7; 
char code = Integer.toString(digit).charAt(0); 
code = Character.forDigit(digit, 10);