ユーザーが数字を入力すると、プログラムがユーザーに文字を返すアプリケーションを作成したいと考えています。
編集:逆に、アスキー文字を数字に変更するのはどうですか?
これらの方法のいずれかを使用して、数値をASCII / Unicode / UTF-16文字に変換できます。
これらのメソッドを使用して、指定された 32 ビット符号付き整数の値をその Unicode 文字に変換できます。
char c = (char)65;
char c = Convert.ToChar(65);
また、ASCII.GetString
バイト配列のバイト範囲を文字列にデコードします。
string s = Encoding.ASCII.GetString(new byte[]{ 65 });
ASCIIEncoding
はエラー検出を提供しないことに注意してください。16 進数の 0x7F より大きいバイトは、Unicode 疑問符 ("?") としてデコードされます。
編集: 要求により、入力された値が 0 から 127 の ASCII 範囲内にあることを確認するチェックを追加しました。これを制限するかどうかはあなた次第です。C# (そして私は一般的に .NET を信じています) では、char
s は UTF-16 を使用して表現されるため、有効な UTF-16 文字値をそれにキャストすることができます。ただし、すべての Unicode 文字がどのように見えるべきかをシステムが認識していない可能性があるため、正しく表示されない場合があります。
// Read a line of input
string input = Console.ReadLine();
int value;
// Try to parse the input into an Int32
if (Int32.TryParse(input, out value)) {
// Parse was successful
if (value >= 0 and value < 128) {
//value entered was within the valid ASCII range
//cast value to a char and print it
char c = (char)value;
Console.WriteLine(c);
}
}
単純にキャストできます。
char c = (char)100;
C# は、ASCII ではなく UTF-16 コーディングで文字を表します。したがって、整数を文字に変換しても、AZ と az に違いはありません。しかし、システムがUTF-16コードを使用しているため、アルファベットと数字以外のASCIIコードを使用していましたが、うまくいきませんでした。したがって、すべての UTF-16 文字の UTF-16 コードを参照しました。モジュールは次のとおりです。
void utfchars()
{
int i, a, b, x;
ConsoleKeyInfo z;
do
{
a = 0; b = 0; Console.Clear();
for (i = 1; i <= 10000; i++)
{
if (b == 20)
{
b = 0;
a = a + 1;
}
Console.SetCursorPosition((a * 15) + 1, b + 1);
Console.Write("{0} == {1}", i, (char)i);
b = b+1;
if (i % 100 == 0)
{
Console.Write("\n\t\t\tPress any key to continue {0}", b);
a = 0; b = 0;
Console.ReadKey(true); Console.Clear();
}
}
Console.Write("\n\n\n\n\n\n\n\t\t\tPress any key to Repeat and E to exit");
z = Console.ReadKey();
if (z.KeyChar == 'e' || z.KeyChar == 'E') Environment.Exit(0);
} while (1 == 1);
}