【C#】共用体を表現する

こんにちばんは.ついこの間,C#で共用体を使う機会があったので,その方法を備忘録的にまとめておきたいと思います.

まず共用体ってのは何かっていうと,要素でメモリ空間を共有しあっている構造体だと考えてくれるといいかな,と

で,いちいち説明するのもめんどくさいのでコードをみてくれ

using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
struct like_union{
  [FieldOffset(0)]
  public Int32 data;
  [FieldOffset(0)]
  public Int16 lower;
  [FieldOffset(2)]
  public Int16 upper;
}

んでもって,使ってみる.

using System;
using System.Runtime.InteropServices;

class Program{
    
    [StructLayout(LayoutKind.Explicit)]
    struct like_union{
      [FieldOffset(0)]
      public Int32 data;
      [FieldOffset(0)]
      public Int16 lower;
      [FieldOffset(2)]
      public Int16 upper;
    }
    
    public static int Main(){
        like_union u = new like_union();
        u.data = 0x12345678;
        Console.WriteLine("data : {0}", u.data.ToString("X8"));
        Console.WriteLine("upper : {0}", u.upper.ToString("X4"));
        Console.WriteLine("lower : {0}", u.lower.ToString("X4"));
        return 0;
    }
}

/// 出力
/// data : 12345678
/// upper : 1234
/// lower : 5678

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です