C#の文字から整数


96

Intが有効な値の範囲内にある場合、Int値をUtf16の対応するCharに変換する最良の方法は何ですか?

回答:


139
(char)myint;

例えば:

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

利回り:

(char)122はz


これは悪い答えです。c =(char)49は「1」ではなく1
nykwil

9
@nykwilギメルの答えに問題はないと思います。
Tom Lint、2015

10
@nykwil-それは誤った情報です。TrueをConsole.WriteLine((char)49 == '1');与えますchar c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);このキャストを使用しても問題ありません。あなたの説明はそれが機能しないことの有効な例を提供していません。さらに、Console.WriteLine((char)49 == 1);ある基本的にあなたのコメント根拠のないになります。
Travis J

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

47
Convert.ToCharは、最終的に "(char)value"として明示的な変換を実行します。ここで、 "value"はint値です。その前に、「値」が0〜0xffffの範囲にあることを確認し、そうでない場合はOverflowExceptionをスローします。追加のメソッド呼び出し、値/境界チェック、およびOverflowExceptionが役立つ場合がありますが、そうでない場合は、単に「(char)value」を使用するとパフォーマンスが向上します。
Triynko

17

公式化されたとおりに質問に正確に答えるわけではありませんが、必要な場合、または最終結果を文字列として受け取ることができる場合は、

string s = Char.ConvertFromUtf32(56);

これにより、必要に応じて代理のUTF-16ペアが提供され、BMPの外にいる場合は保護されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.