Что такое "Java" способ преобразования символов (цифр) в целые - PullRequest
26 голосов
/ 16 октября 2010

С учетом следующего кода:

    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 )

Что вы считаете " best-способ"конвертировать char в int?(" best-way " ~ = идиоматический способ )

Мы конвертируем не фактическое числовое значение символа, а значение представления.

Например:

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

Ответы [ 7 ]

43 голосов
/ 16 октября 2010

Как насчет Character.getNumericValue?

15 голосов
/ 16 октября 2010

Я бы сильно предпочел Character.digit.

7 голосов
/ 16 октября 2010

Первый способ.Он самый легкий и прямой, и соответствует тому, что вы могли бы делать на других (более низких) языках.Конечно, обработка ошибок оставляет желать лучшего.

2 голосов
/ 19 октября 2010

Если скорость критична (вместо проверки вы можете объединить результат) например,

char d0 = '0';
char d1 = '4';
char d2 = '2';
int value = d0 * 100 + d1 * 10 + d2 - '0' * 111;
0 голосов
/ 25 января 2017

Лучший способ преобразовать символ действительной цифры в значение типа int приведен ниже.Если с больше 9, то с не было цифрой.Ничто из того, что я знаю, не быстрее, чем это.Любые цифры в коде ASCII от 0-9 (48-57) ^ до 0 (48) всегда будут давать 0-9.От 0 до 65535 только от 48 до 57 дают от 0 до 9 в соответствующем порядке.

int charValue = (charC ^ '0');
0 голосов
/ 11 марта 2016

Если вы хотите сделать это «с нуля», то вы можете использовать это, например:

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

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

System.out.println(number);

консоль: 98

Что это делаетИспользует значения ASCII, присвоенные chars '9' и '8' (соответственно 57 и 56), а затем, если вы вычтете ноль char '0', вы вычтете 48 из каждого числового значения char, что дает вам int эквивалент.Так как char '9' имеет значение ASCII 57 ... 57 - 48 = 9.

0 голосов
/ 15 октября 2015

Конвертировать в Ascii, затем вычесть 48.

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