给出以下代码:
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
....
答案 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');