int型を byte型の Pointer に Cast

byte0 = A0
byte1 = 86
byte2 = 1
byte3 = 0

C# で byte型の Pointer で int型のデータに Cast して、メモリの内容を16進数でダンプします。
C# でポインタを使うときは unsafe の設定が必要です。

プログラムの説明

  1. Pointer を使ったプログラムは、CLI の環境で通常のコンソールモードのように実行することは出来ません。
    空のプロジェクトから構築して下さい。
    Pointer を使うときは unsafe の設定をして下さい。
    unsafe の設定は Pointer を使う を参照して下さい。
  2. int型のデータに 100000 を格納して、メモリの内容を16進数でダンプします。
    int型のデータと byte型の Pointer です。
    int v = 100000;
    byte *byt = (byte *)&v;
  3. byte型の Pointer を使って16進数でダンプします。
    sizeof(int) で int型のサイズ(4 byte)を取得しています。
        for(int i=0; i<sizeof(int); i++)
            Console.WriteLine("byte{0} = {1:X}", i,*(byt+i));
        
  4. 100000 を16進数に変換すると 000186A0 になります。
    このプログラムを実行すると次のように表示されました。
    byte0 = A0
    byte1 = 86
    byte2 = 1
    byte3 = 0
    最下位桁が先頭に、最上位桁が後部に格納されていることに注目して下さい。
  5. ソースコードです。
    class Test の頭に unsafe を記述しています。
    /******************************************/
    /*★ byte ポインタにキャスト    前田 稔 ★*/
    /******************************************/
    using System;
    
    unsafe class Test
    {
        public static void Main()
        {
            int  v = 100000;
            byte *byt = (byte *)&v;
            for(int i=0; i<sizeof(int); i++)
                Console.WriteLine("byte{0} = {1:X}", i,*(byt+i));
            Console.ReadLine();
        }
    }
    

【演習】

  1. 次の値をダンプするとどのように表示されるでしょうか?
    int v = 10;
  2. 次の値をダンプするとどのように表示されるでしょうか?。
    int v = 200;
  3. 次の値をダンプするとどのように表示されるでしょうか?。
    int v = 1000;
  4. 次の値をダンプするとどのように表示されるでしょうか?。
    int v = -1;

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