将字符(数字)转换为整数的“java”方式是啥[重复]

Posted

技术标签:

【中文标题】将字符(数字)转换为整数的“java”方式是啥[重复]【英文标题】:What's the "java" way of converting chars (digits) to ints [duplicate]将字符(数字)转换为整数的“java”方式是什么[重复] 【发布时间】:2011-04-26 09:24:01 【问题描述】:

给定以下代码:

    char x = '5';
    int a0 = x - '0'; // 0
    int a1 = Integer.parseInt(x + ""); // 1
    int a2 = Integer.parseInt(Character.toString(x)); // 2
    int a3 = Character.digit(x, 10); // 3
    int a4 = Character.getNumericValue(x); // 4
    System.out.printf("%d %d %d %d %d", a0, a1, a2, a3, a4);

(第 4 版记入:casablanca)

您认为将 char 转换为 int 的“最佳方式”是什么? ("最佳方式" ~= 惯用方式)

我们转换的不是char的实际数值,而是表示的值。

例如:

convert('1') -> 1
convert('2') -> 2
....

【问题讨论】:

我敢肯定,像我一样来自那些古老的 C 和 Pascal 语言的任何人都会投票支持第一选项。 @Nikita:我确实来自那些“古老的 C 和 Pascal 事物”,但除非性能绝对关键,否则我更喜欢比x - '0' 更具表现力的方式。 这能回答你的问题吗? Java: parse int value from a char 【参考方案1】:

Character.getNumericValue怎么样?

【讨论】:

【参考方案2】:

我更喜欢Character.digit

【讨论】:

请解释原因【参考方案3】:

第一种方法。它是最轻量级和最直接的,并且映射到您可能在其他(低级)语言中执行的操作。当然,它的错误处理还有一些不足之处。

【讨论】:

【参考方案4】:

如果速度很关键(而不是验证,您可以组合结果) 例如

char d0 = '0';
char d1 = '4';
char d2 = '2';
int value = d0 * 100 + d1 * 10 + d2 - '0' * 111;

【讨论】:

我喜欢'0' * 111 值:-)【参考方案5】:

转换为 Ascii,然后减去 48。

(int) '7' would be 55 
((int) '7') - 48 = 7 
((int) '9') - 48 = 9 

【讨论】:

【参考方案6】:

将有效数字的字符转换为 int 值的最佳方法如下。如果 c 大于 9,则 c 不是数字。我所知道的没有比这更快的了。 ASCII 代码 0-9(48-57) ^ 到 '0'(48) 中的任何数字将始终产生 0-9。从 0 到 65535,只有 48 到 57 按各自的顺序产生 0 到 9。

int charValue = (charC ^ '0');

【讨论】:

以上是关于将字符(数字)转换为整数的“java”方式是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java - 将整数转换为字符串[重复]

java如何将接收到的数字自动转换为枚举

java中怎么将数字转换成字符串

java 怎样将整数转换成字符串时,前面加零

java 中如何将一个字符串转换成一个整数数组

java字符串转成数字