Java 从字符到整型再返回
我想找到一个字符的整数表示,然后再找到一个整数的字符表示 我目前的解决方案是这样的,但不起作用:Java 从字符到整型再返回,java,char,Java,Char,我想找到一个字符的整数表示,然后再找到一个整数的字符表示 我目前的解决方案是这样的,但不起作用: String s = "A" Integer b = Character.getNumericValue(s.toCharArray()[0]); // 10 char c = Character.toChars(b)[0]; // (blank) 我该怎么做 Character.getNumericValue(char)的工作原理存在
String s = "A"
Integer b = Character.getNumericValue(s.toCharArray()[0]); // 10
char c = Character.toChars(b)[0]; // (blank)
我该怎么做 Character.getNumericValue(char)的工作原理存在误解
int b = s.charAt(0); // 65
char c = (char) b // 'A'
返回指定Unicode字符表示的int值。例如,字符“\u216C”(罗马数字50)将返回一个值为50的int
大写字母A-Z('\u0041'至'\u005A')、小写字母('\u0061'至'\u007A')和全宽变量('\uFF21'至'\uFF3A'和'\uFF41'至'\uFF5A')的数值范围为10至35。这与Unicode规范无关,Unicode规范不为这些字符值分配数值
从
换句话说:方法
getNumericValue
不生成指定字符的UTF-16值,但尝试从给定值生成一个数值,即“0”将生成0。“A”对应于十六进制中的10
但10不是对应于“A”的UTF16值
将字符
转换为相应UTF16值的正确方法是使用字符
中的一种代码点方法。或者,如果您是绝对肯定的,则所有值都将是BMP,您可以使用
char c = 'A';
int i = (int) c;
在这种情况下,
Character.toChars(int)
也可以使用。它不是一个空白字符:它是\u000a
,这是一个换行符。不清楚您期望的是什么:您认为c
中应该包含什么?您是否对getNumericValue
感到困惑?此方法将类似于'5'
的字符转换为其数值5
。简而言之,它不会返回ASCII码,是什么让您感到困惑,以及您在每一行都期望得到什么?注意:s.charAt(0)
比s.tocharray()[0]
更有效,因为后者将整个字符串复制到一个数组中,其中你只读一个元素。写charc=s.charAt(0)不是更容易吗代码>?当然,但我试图将答案与OP所采取的步骤联系起来。只是遗漏了字符。getNumericValue
位…:)