什么是将字符(数字)转换为整数的“java”方式

时间:2010-10-16 17:55:57

标签: java integer char

给出以下代码:

    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的“ best-way ”是什么? (“ best-way ”〜= 惯用方式

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

例如:

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

7 个答案:

答案 0 :(得分:43)

答案 1 :(得分:15)

我非常喜欢Character.digit

答案 2 :(得分:7)

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

答案 3 :(得分:2)

如果速度很关键(而不是验证,你可以结合结果) e.g。

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

答案 4 :(得分:-1)

转换为Ascii,然后减去48。

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

答案 5 :(得分:-2)

如果你想通过“scratch”进行,那么你可以使用它,例如:

String str = "98";
int number = 0;

number = str.charAt(0) - '0';
number += str.charAt(1) - '0';

System.out.println(number);

console:98

这样做是使用分配给chars'9'和'8'的ASCII值(分别为57和56),如果你减去零char'0',你从每个数字char减去48,它给你int等价物。所以,因为char'9'的ASCII值为57 ... 57 - 48 = 9。

答案 6 :(得分:-2)

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

int charValue = (charC ^ '0');