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
位…:)