static void Main(string[] args)
{
string str_val = "8584348,894";
//int prefix = Convert.ToInt32(str_val[0]); //prefix = 56 O_o
//int prefix = (int)str_val[0]; //what, again 56? i need 8!
int prefix = Convert.ToInt32("8"); //at least this works -_-
}
知道如何将第一个符号转换为正确的数值?
答案 0 :(得分:11)
如果您使用:
Convert.ToInt32(str_val[0]);
然后你实际上是在调用重载:
Convert.ToInt32(char val);
,它将Unicode / Ascii字符数作为参数传递。
如果要转换第一个字符,则需要强制它为字符串类型:
Convert.ToInt32(str_val.Substring(0, 1));
这样你就可以调用重载:
Convert.ToInt32(string val);
实际上做你想要的(将字符串值转换为此字符串表示的int值)。
答案 1 :(得分:3)
您尝试解析字符串但传入字符。首先将字符转换为字符串。
int prefix = Convert.ToInt32(str_val[0].ToString());
因此字符值8是ASCII值56,您要做的是将值解释为字符串而不是ASCII值。通过使用.ToString()方法,您将字符转换为空终止字符串,可以通过ToInt32方法读取。
答案 2 :(得分:2)
通过这种方式Convert.ToInt32(str_val[0])
,您正在读取字符串索引处的字符,该字符串将char转换为int。 int是ascii for it
答案 3 :(得分:1)
与Bridge提到的一样,它获得了ASCII值。当您在字符串类上使用索引器来获取一个字符时,它会将其作为char返回。如果您阅读char documentation,您会看到它在内部存储为数字UTF-16值。它还具有与大多数数字类型的隐式转换,这些数字类型提取UTF-16值,或将数字形式转换为字符形式。这就是你正在做的事情。
您的意思是将其解析为int,而不是获取UTF-16值的数字表示。这就是转换答案全部进来的地方。
答案 4 :(得分:1)
Int32.Parse(str_val[0])
会在字符串中给你编号。