我们可以将字符转换为等效于相同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;
}
显示可能丢失精度错误......
答案 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 Promotion的Java 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)
public static char[] toChars(int codePoint)
将指定的字符(Unicode代码点)转换为存储在char数组中的UTF-16表示。
答案 4 :(得分:1)
不转换为char
吗?
答案 5 :(得分:0)
有几种方法。
查看Character包装器类。
Character.digit()
可以做到这一点。
实际上这就是诀窍!!
Integer.valueOf('a')