C++结构体:
typedef struct _CommBuffer
{
    Byte Addr :4;
    Byte Fun :4;
    Byte Readonly:1;
    Byte WritOnly:1;
    Byte value 6;
}CommBuffer;
 使用:
   Word buffer;
   rec(&buffer);
CommBuffer *pB;
   pB = (CommBuffer *)&buffer; 
   int add =  pB->Addr;
   int fun = pB->Fun;
   ....
问题:
结构体如何定义?
如何使用?可以将word转为CommBuffer吗?

解决方案 »

  1.   

    问题:在C#中
    位结构体如何定义?
    如何使用?可以将word转为CommBuffer吗?
      

  2.   


     定义一个类似于 pB->Addr= buffer&0x0f;
    buffer |= pB->Addr
    的转换程序。
      

  3.   

    这个问题只能用unsafe代码来解决,或者回传到一个标准DLL中处理.
      

  4.   

    unsafe struct _XXK
    {
    public Byte a:1;
    public Byte b:1;
    public Byte c:6;
    }
    是不是这样定义呢?
    我试了有编译错误
      

  5.   

    have a try!struct CommBuffer
    {
         public UInt16 Data;
         public byte Addr
         {
              get{ return (byte)( ( Data & 0xF000 ) >> 12 );
          }
         public byte Fun 
         {
              get{ return (byte)( ( Data & 0xF000 ) >> 8 );
          }
         public byte Readonly
         {
              get{ return (byte)( ( Data & 0x0080 ) >> 7 );
          }
         public byte WritOnly
         {
              get{ return (byte)( ( Data & 0x0040 ) >> 6 );
          }
         public byte value
         {
              get{ return (byte)( Data & 0x003F );
          }
    };