我在c#中有一个char:
char foo = '2';
现在我想把2变成一个int.我发现Convert.ToInt32返回char的实际十进制值而不是数字2.以下将起作用:
int bar = Convert.ToInt32(new string(foo, 1));
int.parse也适用于字符串.
C#中没有本地函数从char到int而不是字符串吗?我知道这是微不足道的,但似乎很奇怪,直接进行转换没有任何原生的东西.
这会将它转换为int:
char foo = '2'; int bar = foo - '0';
这是有效的,因为每个字符在内部由数字表示.字符"0"到"9"由连续数字表示,因此找到字符"0"和"2"之间的差异会得到数字2.
有趣的答案,但文档说不同:
使用这些
GetNumericValue
方法将Char
表示数字的对象转换为数值类型.使用Parse
和TryParse
将字符串中的字符转换为Char
对象.使用ToString
一个转换Char
对象的String
对象.
http://msdn.microsoft.com/en-us/library/system.char.aspx
有没有人考虑使用int.Parse()
和int.TryParse()
喜欢这个
int bar = int.Parse(foo.ToString());
甚至更好
int bar; if (!int.TryParse(foo.ToString(), out bar)) { //Do something to correct the problem }
它更安全,更不容易出错
char c = '1'; int i = (int)(c-'0');
你可以用它创建一个静态方法:
static int ToInt(this char c) { return (int)(c - '0'); }
试试这个
char x = '9'; // '9' = ASCII 57 int b = x - '0'; //That is '9' - '0' = 57 - 48 = 9
默认情况下你使用UNICODE所以我建议使用faulty的方法
int bar = int.Parse(foo.ToString());
即使数字和基本拉丁字符下的数值相同.