我碰到這條線今天代碼:將非數字字符轉換爲int?
int c = (int)'c';
我不知道,你可以抹上char
到int
。所以我測試了一下,發現a = 97,b = 98,c = 99,d = 100等等......
爲什麼'a'97?這些數字與什麼有關?
我碰到這條線今天代碼:將非數字字符轉換爲int?
int c = (int)'c';
我不知道,你可以抹上char
到int
。所以我測試了一下,發現a = 97,b = 98,c = 99,d = 100等等......
爲什麼'a'97?這些數字與什麼有關?
其他人(到目前爲止)已經提到ASCII。這是一個非常有限的觀點 - 它適用於'a'
,但不適用於任何口音等 - 這可以很容易地代表char
。
甲char
僅僅是一個16位無符號整數,它是一個UTF-16代碼單元。 通常是,它等價於一個Unicode字符,但並不總是 - 單個完整字符有時需要多個代碼單元。有關更多詳細信息,請參閱System.Char
的文檔。
從char
到int
的隱式轉換(你不需要在你的代碼中投)剛剛轉換16位無符號整數,在自然,無損方式的32位有符號整數 - 就好像你有一個ushort
。
請注意,ASCII中的每個有效字符在UTF-16中都具有相同的值,這就是爲什麼當這兩個示例僅來自ASCII集的例子時,這兩個字符常常會混淆。
當一個簡單的「這是ASCII」是不夠的,它留給喬恩斯基特到進入病因學。 – 2013-04-09 15:41:55
嗯,我認爲這是唯一的**全**(和100%正確)的答案,它當然值得更多upvotes。 – Zbigniew 2013-04-09 15:43:44
這就是我想要做的。 – 2013-04-09 15:44:25
97
是字母爲a
的UTF-16碼單元值。
基本上這個數字涉及給定字符的UTF-16代碼單元。
[ asciitable.com](http://www.asciitable.com)供快速參考(請參閱** dec **欄)。 – 2013-04-09 15:37:48
技術上正確,但'char'是一個UTF-16代碼單元,不是ASCII字符。 – RoadieRich 2013-04-09 16:13:16
對,我編輯了我的答案 – Zbigniew 2013-04-09 16:23:07
它們是字符代碼,通常稱爲ASCII值。
儘管如此,技術上,字符代碼不是ASCII。
它們是UTF-16編碼單元。 *不*與UTF-8相同。目前還不清楚VS來自哪裏,無論您使用哪個IDE,它都是語言和平臺的一部分。 – 2013-04-09 15:41:07
那麼,因此「我相信」...有關的一點是,它們實際上是與ASCII相一致的字符代碼,但實際上並不是ASCII。 – 2013-04-09 15:43:39
新downvoter關心評論?答案是事實準確的。 – 2013-04-09 16:15:13
他們的ASCII碼對應的十進制表示: http://www.asciitable.com/index/asciifull.gif 所以 'A' 將是一個97
[不ASCII,UTF-16](http://msdn.microsoft.com/en-gb/library/vstudio/x9h8tsay.aspx) – RoadieRich 2013-04-09 16:15:13
http://www.dotnetperls.com/ascii-table – 2013-04-09 15:37:42
在您編寫另一行代碼之前閱讀此內容:http://www.joelonsoftware.com/articles/Unicode.html – 2013-04-09 15:49:04
我找到了一份軟件工作開發人員從未寫過任何(適當的)代碼。我必須學習工作! :) – 2013-04-09 15:53:28