【问题标题】:Why can't I typecast from char to int?为什么我不能从 char 类型转换为 int?
【发布时间】:2011-11-20 17:32:43
【问题描述】:

由于某种原因,以下代码不起作用:

char cValue = '8';
int digits = (int)cValue;

它不断给出 5 或 7 的值,或者类似的值。

我只是好奇为什么 - 我改用 Character.getNumericValue(cValue);

为什么会这样?

【问题讨论】:

  • 你真的得到了值 56,它是字符 '8' 的 ASCII 值吗?
  • 你可以直接说char cValue = 8;。然后演员应该按预期成功。
  • @GregHewgill,这是有道理的。谢谢

标签: java casting char


【解决方案1】:

可以将 char 类型转换为 int,事实上你是。字符“8”的二进制表示实际上是 56(十进制)。有关转换,请参阅any ASCII chart。您正在寻找的是解析,而不是强制转换。 getNumericValue() 解析 char 并为您提供等效的数字。转换 char 只是改变了类型并使位的模式保持不变。然后根据与它们关联的变量的类型来解释这些位。

【讨论】:

    【解决方案2】:

    Java char 是一个无符号的 16 位值。当您将 one 转换为 int 时,您将获得该字符的 Unicode 值。字符“8”的 Unicode 值是十进制 56。

    getNumericValue 完全不同 - 如果它是具有数字含义的字符,它会为您提供字符的含义。

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      相关资源
      最近更新 更多