5

数字の ASCII 値を整数に変換したい場合は、次のようにする必要があります。

value - '0'?

逆に、Integer を ASCII に変換するには、次のようにする必要があります。

value + '0'

何故ですか?

4

5 に答える 5

11

数字文字の整数値は、C 標準によって連続することが保証されているためです。

したがって'1' - '0' == 1'2' - '0' == 2式が実際に機能することを推測できるなど。

補足:

  1. これは標準で保証されているため、ターゲット プラットフォームが ASCII を使用していなくても機能します。
  2. 逆に、標準でこれが義務付けられていない場合 (文字の値についてはそうではありません)、この手法は移植可能ではありません。ASCII を使用するターゲット システムに依存します。
于 2013-02-12T11:40:38.320 に答える
3

その結果、ASCII 数字が次々とエンコードされるためです。

と言う'0' == 48。次に'1' == 49'2' == 50など。

考えてみれば、'2' - '0' == 50 - 48 == 2. 同様に、2 + '0' == 2 + 48 == 50 == '2'.

于 2013-02-12T11:41:50.290 に答える
0

数字の ASCII 値はすべて順番に並んでいます。したがって0、ASCIIコードポイントでシーケンスの開始をマークし、位置48まで続けます。957

于 2013-02-12T11:40:02.820 に答える
0

ASCII標準で定義されているように、数字のコードが順番に(48 .. 57)あるという理由だけで。

于 2013-02-12T11:40:11.143 に答える
0

ASCII 値は、テーブル内のシンボルの位置番号です。したがって、「0」記号の位置番号を数字記号のオフセットとして使用し、それに整数の数字値を追加して、その位置番号を計算できます。

于 2013-02-12T11:42:32.900 に答える