views:

78

answers:

4

Given the following code:

    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);

(version 4 credited to: casablanca)

What do you consider to be the "best-way" to convert a char into an int ? ("best-way" ~= idiomatic way)

We are not converting the actual numerical value of the char, but the value of the representation.

Eg.:

convert('1') -> 1
convert('2') -> 2
....
+5  A: 

The first method. It's the most lightweight and direct, and maps to what you might do in other (lower-level) languages. Of course, its error handling leaves something to be desired.

Oli Charlesworth
+6  A: 

I'd strongly prefer Character.digit.

jacobm
+5  A: 

How about Character.getNumericValue?

casablanca
+1  A: 

If speed is critical (rather than validation you can combine the result) e.g.

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