2013-02-18 77 views
0

我想解析通過字符串的前三個字符。解析通過C中的字符串的問題#

public List<string> sortModes(List<string> allModesNonSorted) 
{ 
    foreach (string s in allModesNonSorted) 
    { 
     char firstNumber = s[0]; 
     char secondNumber = s[1]; 
     char thirdNumber = s[2]; 

     char.IsDigit(firstNumber); 
     char.IsDigit(secondNumber); 
     char.IsDigit(thirdNumber); 

     combinedNumbers = Convert.ToInt16(firstNumber) + Convert.ToInt16(secondNumber) + Convert.ToInt16(thirdNumber); 
    } 
    return allModesNonSorted; 
} 

它可以正確識別每一個字符,但是當我添加了數字上的額外價值53或55以下補充說,53和55均包括在內。爲什麼這樣做?

+5

這不是「添加」額外的值。字符串的前兩個字符是'5'和'7',它們的Unicode值爲53和55.這些值是正在顯示的內容。 – 2013-02-18 19:52:42

回答

5

53是'5'的Unicode值,55是'7'的Unicode值。它向您顯示數據的數字和字符版本。

你會注意到secondNumber你會看到二進制值0和字符值'\ 0'。

如果你想詮釋一個字符串作爲一個整數,你可以使用

int myInteger = int.Parse(myString); 

特別是如果你知道你總是有你可以做類似的格式

input = "999 Hz Bla bla" 

int firstSeparator = input.IndexOf(' '); 
string frequency = input.Substring(firstSeparator); 
int numericFrequency = int.Parse(frequency); 

只要數字是foll,無論數字有多少位都可以工作欠空間字符。

1

因爲您將它們視爲字符。

字符'5'依次是ASCII中的第53個字符。

最簡單的解決方案就是從它們中減去字符'0',這會給你一個字符的數值。

2

53是字符的ASCII值「5」 57是字符的ASCII值「7」

這是顯示您對實際值額外的細節只是Visual Studio中。

您可以繼續使用您的代碼。

1

5355是'5'和'7'字符(字符存儲在內存中的方式)的ASCII值。

如果您需要將它們轉換爲整數,請看this SO post