C# 中将 char 转换为 int
我在 C# 中有一个 char:
char foo = '2';
现在我想将 2 转换为 int。 我发现 Convert.ToInt32 返回 char 的实际十进制值,而不是数字 2。以下内容将起作用:
int bar = Convert.ToInt32(new string(foo, 1));
int.parse 也仅适用于字符串。
C# 中是否没有本地函数可以从 char 转换为 int 而不将其转换为字符串? 我知道这是微不足道的,但奇怪的是没有任何本地东西可以直接进行转换。
I have a char in c#:
char foo = '2';
Now I want to get the 2 into an int. I find that Convert.ToInt32 returns the actual decimal value of the char and not the number 2. The following will work:
int bar = Convert.ToInt32(new string(foo, 1));
int.parse only works on strings as well.
Is there no native function in C# to go from a char to int without making it a string? I know this is trivial but it just seems odd that there's nothing native to directly make the conversion.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
原理:
ASCII 字符 0-9 的二进制为:
如果您取每个字符的前 4 个 LSB(使用按位与 8'b00001111 等于 15),您将得到实际的数字 (0000 = 0,0001=1,0010=2,... )
用法:
Principle:
The binary of the ASCII charecters 0-9 is:
and if you take in each one of them the first 4 LSB (using bitwise AND with 8'b00001111 that equals to 15) you get the actual number (0000 = 0,0001=1,0010=2,... )
Usage:
真正的方法是:
“theNameOfYourInt” - 您希望将 char 转换为的 int。
“theNameOfYourChar” - 您想要使用的 Char,因此它将转换为 int。
留下一切。
The real way is:
"theNameOfYourInt" - the int you want your char to be transformed to.
"theNameOfYourChar" - The Char you want to be used so it will be transformed into an int.
Leave everything else be.
这将转换为整数并处理 unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
您可以阅读更多内容 此处。
This converts to an integer and handles unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
You can read more here.
默认情况下,您使用 UNICODE,因此我建议使用错误的方法
int bar = int.Parse(foo.ToString());
即使下面的数字值对于数字和基本拉丁字符来说是相同的。
By default you use UNICODE so I suggest using faulty's method
int bar = int.Parse(foo.ToString());
Even though the numeric values under are the same for digits and basic Latin chars.
试试这个
Try This
你可以用它创建一个静态方法:
and you can create a static method out of it:
有没有人考虑过像这样使用
int.Parse()
和int.TryParse()
更好的
是这样更安全并且更不容易出错
Has anyone considered using
int.Parse()
andint.TryParse()
like thisEven better like this
It's a lot safer and less error prone
有趣的答案,但文档的说法不同:
http://msdn.microsoft.com/en-us/library/system .char.aspx
Interesting answers but the docs say differently:
http://msdn.microsoft.com/en-us/library/system.char.aspx
这会将其转换为
int
:这是有效的,因为每个字符在内部都由一个数字表示。 字符
'0'
到'9'
是用连续的数字表示的,所以找出字符'0'
和之间的区别'2'
结果为数字 2。This will convert it to an
int
:This works because each character is internally represented by a number. The characters
'0'
to'9'
are represented by consecutive numbers, so finding the difference between the characters'0'
and'2'
results in the number 2.