Int to C#中的Char


96

考虑到Int在有效值范围内,将Int值转换为Utf16中相应的Char的最佳方法是什么?

Answers:


139
(char)myint;

例如:

Console.WriteLine("(char)122 is {0}", (char)122);

产量:

(char)122是z


这是一个不好的答案。C =(char)的49是不1 '1'
nykwil

9
@nykwil我没有发现gimel的答案有什么问题。
汤姆·林特

10
@nykwil-那是错误信息。Console.WriteLine((char)49 == '1');会给True。当然,char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);使用此转换非常好。您的解释未提供其无效的有效示例。此外,Console.WriteLine((char)49 == 1);false实质上会使您的评论毫无根据。
特拉维斯J

62
int i = 65;
char c = Convert.ToChar(i);

47
Convert.ToChar最终将执行显式转换为“(char)value”,其中“ value”是您的int值。在这样做之前,它将检查以确保“值”在0到0xffff的范围内,如果不是,则抛出OverflowException。额外的方法调用,值/边界检查和OverflowException可能会有用,但是如果没有,如果仅使用“(char)value”,性能会更好。
Triynko 2011年

17

尽管不能完全按照公式回答问题,但是如果您需要或可以将最终结果作为字符串,也可以使用

string s = Char.ConvertFromUtf32(56);

如果需要,它将为您提供UTF-16对的替代,如果您不在BMP中,则可以保护您。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.