構造体を明示的に定義する

[C#]

[StructLayout(LayoutKind.Explicit)]で 全てのメンバ変数に対して明示的に位置を指定となる。

[StructLayout(LayoutKind.Explicit)]
unsafe struct ImageData
{
    [FieldOffset(0)]
    public int Width;
    [FieldOffset(4)]
    public int Height;
    [FieldOffset(8)]
    public byte* Buf;
    //※まだフィールドがある場合は注意!
    // ポインタ型は32bitとは限らない
    public void Show()
    {
        for(int y = 0; y < Height; y++)
        {
            for (int x = 0; x < Width; x++)
                Console.Write("{0,4}", Buf[y * Width + x]);
            Console.WriteLine();
        }
    }
}

ネタ元