Character Code

C# の Character Code(Unicode)を調べます。

プログラムの説明

  1. 古くから使われていた Windows System の文字コードは MultiByte ですが、C# では Unicode(16 bit) が使われています。
    C# で使われている Unicode(2 byte) をバイト形式で定義して印字してみましょう。
    半角文字も全角文字も2バイトで定義されます。
    文字コードの説明は Store Guide を参照して下さい。
  2. String の形式に合わせて、byte 配列で文字列("56EFef56")を定義してみました。
    半角数字の「5」は 0x0035 ですが、ファイル上では 00 と 35 が前後逆に格納されています。
    小文字の「e」は 0x0065 で、「f」は 0x0066 で表されます。
    大文字の「5」は 0xff15 で、「6」0xff16 で表されます。
        static byte[] byt =
        {   0x35, 0x00, 0x36, 0x00, 0x45, 0x00, 0x46, 0x00,
            0x65, 0x00, 0x66, 0x00, 0x15, 0xff, 0x16, 0xff
        };
    
  3. "56EFef56" をタイプした TEXT ファイルを Binary Editor で確認してみました。
    ファイル先頭の FFFF は UTF-16 を示す BOM(byte order mark)です。
    末尾の 0x000A は改行コード(LF)です。

  4. byte 配列から char に変換するときは、右側(後側)を8ビット左シフトして下さい。
    例えば、byt の 0x35,0x00 は char では 0035 に変換します。
    同様に byr 0x16,0xff は char の ff16 に変換して印字します。
        (char)(byt[i*2]+(byt[i*2+1]<<8))
        
  5. CharCode.cs のソースコードです。
    リスト上ではわかり難いのですが、ch の '2' 及び 'C' は全角文字でタイプしています。
    /*★ Byte → Char の表示     前田 稔 ★*/
    using System;
    
    class Prog
    {
        static char[] ch = { '0', '1', '2', 'A', 'B', 'C', 'd', 'e' };
        static byte[] byt =
        {   0x35, 0x00, 0x36, 0x00, 0x45, 0x00, 0x46, 0x00,
            0x65, 0x00, 0x66, 0x00, 0x15, 0xff, 0x16, 0xff
        };
        public static void Main()
        {
            for(int i=0; i<8; i++)  Console.WriteLine(ch[i]);
            Console.WriteLine(new string(ch));
            for(int i=0; i<8; i++)  Console.WriteLine((char)(byt[i*2]+(byt[i*2+1]<<8)));
        }
    }
    
  6. コンパイル&実行のリストです。
    Console.WriteLine(new string(ch)); で char[] 配列を string に変換して印字してみました。
    c:\DATA\C#\BAT>csc CharCode.cs
    Microsoft(R) Visual C# 2005 Compiler version 8.00.50727.9136
    for Microsoft(R) Windows(R) 2005 Framework version 2.0.50727
    Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.
    
    c:\DATA\C#\BAT>CharCode.exe
    0
    1
    2
    A
    B
    C
    d
    e
    012ABCde
    5
    6
    E
    F
    e
    f
    5
    6
    
  7. char型を byte型に Cast する方法は byte型の Pointer で char型を Cast 及び byte型の Pointer で文字を設定 を参照して下さい。

【NOTE】

ソースプログラムの文字コードには UTF-8 が良く使われていますが、「\」で信じられない現象が起きています。
詳細は Store Guide から「文字コードの説明」を参照して下さい。

超初心者のプログラム入門(C# Frame Work)