2013-02-12 236 views
1

爲什麼當我們想要將一個數字的ASCII值轉換爲一個整數時,我們需要這樣做:爲什麼數字字符的ASCII值等於值加'0'?

value - '0'

和周圍的其他方式,向整數轉換成ASCII碼,我們需要做的:

value + '0' 

這是爲什麼?

+0

注意:兩者都假定所討論的整數在零(0)和九(9)之間。只有在這個範圍內纔是準確的。 – WhozCraig 2013-02-12 11:59:35

回答

8

因爲數字字符的整數值由C標準保證是連續的。

因此'1' - '0' == 1'2' - '0' == 2等從中你可以推斷出你的公式確實有效。

圖片的標題說明:

  1. 因爲這是標準的保證,它的工作原理,即使目標平臺不使用ASCII。相反,如果標準沒有強制要求(它不會對字母的值進行這樣做),那麼這種技術將不可移植;它將依賴於使用ASCII的目標系統。
+0

這是正確的答案,ASCII標準是無關緊要的。 C標準本身保證數字「0」到「9」是相鄰的:這些是​​標準對任何形式保證的唯一字符。 – Lundin 2013-02-12 12:20:05

0

數字的ASCII值全部按順序排列。所以0只是在ASCII代碼點48處標記序列的開始,在位置57處繼續到9

0

只是因爲ASCII碼爲standard定義的數字的編碼順序(48..57)。

2

由於ASCII數字是一個接一個地編碼的。

'0' == 48。然後'1' == 49,'2' == 50等等。

如果你仔細想想吧,'2' - '0' == 50 - 48 == 2。同樣,2 + '0' == 2 + 48 == 50 == '2'

0

ASCII值是表中符號的位置編號。因此,您使用'0'符號位置號碼作爲數字符號的偏移量,向其添加整數數字值,您可以計算其位置號碼。