C#char到int

所以我有一个字符在C#中:

char foo = '2'; 

现在我想把2变成一个int。 我发现Convert.ToInt32返回字符的实际十进制值,而不是数字2.以下将工作:

 int bar = Convert.ToInt32(new string(foo, 1)); 

int.parse也只适用于string。

C#中没有本地函数从一个字符到int而不使它成为一个string? 我知道这是微不足道的,但似乎有点奇怪,没有什么原生的直接进行转换。

有趣的答案,但文件的说法不同:

使用GetNumericValue方法将表示数字的Char对象转换为数值types。 使用Parse和TryParse将string中的字符转换为Char对象。 使用ToString将Char对象转换为String对象。

http://msdn.microsoft.com/en-us/library/system.char.aspx

这会将其转换为int:

 char foo = '2'; int bar = foo - '0'; 

这是有效的,因为每个字符在内部由一个数字表示。 字符“0”到“9”由连续的数字表示,因此find字符“0”和“2”之间的差异导致数字2。

有没有人考虑像这样使用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'); 

你可以创build一个静态方法:

 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,所以我build议使用错误的方法

int bar = int.Parse(foo.ToString());

即使下面的数字值是数字和基本拉丁字符相同。

这将转换为一个整数,并处理unicode

CharUnicodeInfo.GetDecimalDigitValue('2')

你可以在这里阅读更多。

我使用Compact Framework 3.5,没有“char.Parse”方法。 我认为使用Convert类不错。 (通过C#查看CLR,Jeffrey Richter)

 char letterA = Convert.ToChar(65); Console.WriteLine(letterA); letterA = 'あ'; ushort valueA = Convert.ToUInt16(letterA); Console.WriteLine(valueA); char japaneseA = Convert.ToChar(valueA); Console.WriteLine(japaneseA); 

与ASCII字符或Unicode字符一起使用

就这样

安东尼奥

尝试以下操作:

 CharUnicodeInfo.GetDecimalDigitValue 

它将在内部调用GetNumericValue并获取所需的字节。

根据字符不是ASCII码的结果比较一些方法:

 char c = '\n'; Debug.Print($"{c & 15}"); // 10 Debug.Print($"{c ^ 48}"); // 58 Debug.Print($"{c - 48}"); // -38 Debug.Print($"{(uint)c - 48}"); // 4294967258 Debug.Print($"{char.GetNumericValue(c)}"); // -1 

我看到了很多答案,但他们似乎对我感到困惑。 我们不能简单地使用types铸造。

例如: –

 int s; char i= '2'; s = (int) i; 

这对我工作:

 int bar = int.Parse("" + foo);