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对象。
这会将其转换为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);