小编Ian*_*son的帖子

使用c#的StrucLayout和FieldOffset表示联合位域

我理解为了在C#中表示联合,我需要使用StructLayout [LayoutKind.Explicit]]和[FieldOffset(x)] attribut来指定联合内部的字节偏移量.但是,我有一个我想要表示的跟随联合,而FieldOffset属性仅偏移一个字节的大小.

union _myUnion
{
     unsigned int info;
     struct
     {
          unsigned int flag1:1 // bit 0
          unsigned int flag2:1 // bit 1
          unsigned int flag3:1 // bit 2
          unsigned int flag4:1 // bit 3
          unsigned int flag5:1 // bit 4
          unsigned int flag6:1 // bit 5
          .
          .
          .
          unsigned int flag31:1 // bit 31
     }
}
Run Code Online (Sandbox Code Playgroud)

正如你在联合中看到的内部结构一样,我不能使用FieldOffset,因为我需要一些可以稍微偏移的东西.

这个问题有方法解决吗?我试图调用一个DLL函数,其中一个数据结构被定义为这样,我没有关于如何最好地表示这个联合结构的想法.

c# union bit-fields

5
推荐指数
1
解决办法
1216
查看次数

标签 统计

bit-fields ×1

c# ×1

union ×1