如何把以下C++定义转化为C#定义 ???
typedef unsigned short u16;typedef union{
u16 val;
struct{
u16 bit0:1;
u16 bit1:1;
u16 bit2:1;
u16 bit3:1;
u16 bit4:1;
u16 bit5:1;
u16 bit6:1;
u16 bit7:1;
u16 bit8:1;
u16 bit9:1;
u16 bit10:1;
u16 bit11:1;
u16 bit12:1;
u16 bit13:1;
u16 bit14:1;
u16 bit15:1;
}bits;
}REGS;

解决方案 »

  1.   

    public struct REGS
    {
       [FieldOffset(0)] ushort val;
       [FieldOffset(2)] ushort tmp;   public ushort bit7
       {
          get { return (tmp >> 7) & 1; }
          set { tmp |= (value & 1) << 7; }
       }
       ......
    }
      

  2.   

    基本上是这样,算得不对自己改啦,c# 里面不能使用bit,只能用属性代替
      

  3.   

    如果你是32位的bit,倒是可以用 BitVector32 来代替的,可现在bit16, so...
      

  4.   

    public struct REGS
    {
       [FieldOffset(0)] ushort val;
       [FieldOffset(2)] ushort tmp;   public ushort bit7
       {
          get { return (tmp >> 7) & 1; }    //应该是6 不是7 呵呵~
          set { tmp |= (value & 1) << 7; }  
       }
       ......
    }
      

  5.   

    get { return (tmp >> 7) & 1; }    //应该是6 不是7 呵呵~??你算错了吧, bit7 是在第8位上,应当是 7 bit0 ... 0 开始的~~~~