0

我正在尝试解析字符串的前三个字符。

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。为什么要这样做??

4

4 回答 4

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);

无论频率中有多少位数字,只要数字后跟一个空格字符,这将起作用。

于 2013-02-18T19:53:13.703 回答
2

53 是字符 '5' 的 ASCII 值 57 是字符 '7' 的 ASCII 值

这只是 Visual Studio 向您展示有关实际值的额外详细信息。

您可以继续使用您的代码。

于 2013-02-18T19:55:24.780 回答
1

因为您将它们视为角色。

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

最简单的解决方案是从所有字符中减去字符“0”,这将为您提供单个字符的数值。

于 2013-02-18T19:53:55.823 回答
1

53是 '5'和55'7' 字符的 ASCII 值(字符在内存中的存储方式)。

如果您需要将它们转换为整数,请查看此 SO 帖子

于 2013-02-18T19:55:56.180 回答