I know this is trivial, but I can’t find the proper explication. I have the following code
JavaScript
x
str="1230"
int rez=str.charAt(3) - '0';
rez=3;
How does this parsing work?
Advertisement
Answer
As long as the character is a digit, you can get the equivalent int
value by subtracting '0'
. The ASCII coding for '0'
is decimal 48
, '1'
is decimal 49
, etc.
So '8' - '0' = 56 - 48 = 8;
For your number, you can parse the entire string like this (assuming all the characters are digits, otherwise the result wouldn’t make sense).
JavaScript
String v = "1230";
int result = 0; // starting point
for (int i = 0; i < v.length(); i++) {
result = result* 10 + v.charAt(i) -'0';
}
System.out.println(result);
Prints
JavaScript
1230
Explanation
JavaScript
In the above loop, first time thru
result = 0 * 10 + '1'-'0 = 1
second time thru
result = 1 * 10 + '2'-'0' = 12
third time thru
result = 12 * 10 + '3'-'0' = 123
last time thru
result = 123 * 10 + '0'-'0' = 1230