Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在尝试将字符串的第一个符号转换为int,得到奇怪的值_C#_String_Integer - Fatal编程技术网

C# 正在尝试将字符串的第一个符号转换为int,得到奇怪的值

C# 正在尝试将字符串的第一个符号转换为int,得到奇怪的值,c#,string,integer,C#,String,Integer,知道如何将第一个符号转换为正确的数值吗?通过这种方式将.convert.ToInt32(str_val[0])您正在读取字符串索引处的字符,该索引将字符转换为int。int是它的ascii码。您试图解析字符串但却传入了字符。首先将字符转换为字符串 static void Main(string[] args) { string str_val = "8584348,894"; //int prefix = Convert.ToInt32(str_val[0]); //prefix

知道如何将第一个符号转换为正确的数值吗?

通过这种方式将.convert.ToInt32(str_val[0])您正在读取字符串索引处的字符,该索引将字符转换为int。int是它的ascii码。

您试图解析字符串但却传入了字符。首先将字符转换为字符串

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 -_-
}
因此字符值8是ASCII值56,您要做的是将该值作为字符串而不是ASCII值进行输入。通过使用.ToString()方法,可以将字符转换为以null结尾的字符串,该字符串可以由ToInt32方法读取

如果您使用:

int prefix = Convert.ToInt32(str_val[0].ToString());
那么您实际上是在调用重载:

Convert.ToInt32(str_val[0]);
Convert.ToInt32(str_val.Substring(0, 1));
它给出作为参数传递的字符的Unicode/Ascii编号

如果要转换第一个字符,需要将其强制为字符串类型:

Convert.ToInt32(char val);
这样您就可以称为重载:

Convert.ToInt32(str_val[0]);
Convert.ToInt32(str_val.Substring(0, 1));

它实际执行您想要的操作(将字符串值转换为该字符串表示的int值)。

就像前面提到的Bridge一样,它得到的是ASCII值。当您在string类上使用索引器仅获取一个字符时,它会将其作为字符返回。如果您阅读,您将看到它在内部存储为一个数字UTF-16值。它还具有与大多数数字类型之间的隐式转换,这些类型提取UTF-16值,或将数字形式转换为字符形式。你就是这么做的

您的意思是将其解析为int,而不是获取UTF-16值的数字表示形式。这就是转换答案的原因

Convert.ToInt32(string val);

将以字符串形式为您提供数字。

它将查找字符的ascii值,以防万一您不知道。我没有将您设置为-1,是其他人:p我始终将+1设置为回答的每个人。我这样做了:]但现在恢复为您在回答中包含了“int是ascii”的解释。:]您好。@KubaWyrostek是的,因为您可以快速键入以首先获得答案,谢谢