Why when we want to convert an ASCII value of a digit into an integer, we need to do:
value - '0'
?
And the other way around, to convert Integer to ASCII, we need to do:
value + '0'
Why is that?
Why when we want to convert an ASCII value of a digit into an integer, we need to do:
value - '0'
?
And the other way around, to convert Integer to ASCII, we need to do:
value + '0'
Why is that?
Because the integral values of the digit characters are guaranteed by the C standard to be consecutive.
Therefore '1' - '0' == 1
, '2' - '0' == 2
, etc. from which you can infer that your formulas really do work.
Sidenotes:
Because ASCII digits are encoded consequently one after another.
Say '0' == 48
. Then '1' == 49
, '2' == 50
and so on.
If you think about it, '2' - '0' == 50 - 48 == 2
. Similarly, 2 + '0' == 2 + 48 == 50 == '2'
.
The ASCII values of the digits are all in sequence. So 0
simply marks the start of the sequence at ASCII codepoint 48
, continuing up to 9
at position 57
.
Just because codes of digits are in sequence (48 .. 57) as defined by ASCII standard.
ASCII value is a position number of a symbol in the table. So you use '0' symbol position number as an offset of the digit symbols, adding an integer digit value to it you can calculate its position number.