我们可以将整数转换为字符

时间:2010-03-28 16:57:16

标签: java

我们可以将字符转换为等效于相同ASCII值的整数,但我们可以做相反的事情,即将给定的ASCII值转换为其等价的字符吗?

public String alphabets(int[] num)
{
char[] s = new char[num.length];
String str = new String();
for(int i=0; i< num.length; i++)
{   
    s[i] = 'A' + (char)(num[i]- 1);
    str += Character.toString(s[i]);
}
return str;         
}

显示可能丢失精度错误......

6 个答案:

答案 0 :(得分:8)

转换为/来自:

int i = 65;
char c = (char)i;

char c = 'A';
int i = (int)c;

答案 1 :(得分:6)

错误比您最初想象的更复杂,因为它实际上是'+'运算符导致“可能丢失精度错误”。 如果移动了强制转换,则可以解决错误:

s[i] = (char)('A' + (num[i]- 1));


说明
§5.6.2 Binary Numeric PromotionJava Language Specification的第一个项目符号列表中,声明:

当运算符将二进制数字提升应用于一对操作数[...]时,以下规则按顺序应用,使用扩展转换(第5.1.2节)根据需要转换操作数:

  • 如果任何操作数是引用类型,则执行拆箱转换(第5.1.8节)。然后:
  • 如果任一操作数的类型为double,则另一个操作数将转换为double。
  • 否则,如果任一操作数的类型为float,则另一个操作数转换为float。
  • 否则,如果任一操作数的类型为long,则另一个操作数将转换为long。
  • 否则,两个操作数都将转换为int类型。

在下一个项目符号列表中说明:

对某些运算符的操作数执行二进制数字提升:

  • 乘法运算符*,/和%(§15.17)
  • 数字类型的加法和减法运算符+和 - (§15.18.2)
  • 数值比较运算符,&gt; =(§15.20.1)
  • 数字相等运算符==和!=(§15.21.1)
  • 整数按位运算符&amp;,^和| (§15.22.1)
  • 在某些情况下,条件运算符? :(§15.25)

在您的情况下,转换为:

s[i] = (int)'A' + (int)((char)(num[i] - (int)1));
因此错误。

答案 2 :(得分:5)

你实际上甚至不需要演员:

char c = 126;

这实际上似乎也适用于unicode角色。例如,尝试:

 System.out.println((int) 'โ'); // outputs 3650, a thai symbol
 char p = 3650;
 System.out.println(p); // outputs the above symbol

答案 3 :(得分:3)

Character.toChars

public static char[] toChars(int codePoint)
     

将指定的字符(Unicode代码点)转换为存储在char数组中的UTF-16表示。

答案 4 :(得分:1)

不转换为char吗?

答案 5 :(得分:0)

有几种方法。 查看Character包装器类。 Character.digit()可以做到这一点。 实际上这就是诀窍!!

Integer.valueOf('a')