将字符(数字)转换为整数的“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”方式是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章