繁体   English   中英

如何在C#中表示结构中的位

[英]How to represent bits in structure in c#

我有一个字节代表两个值。 第一位代表序列号。 其余位代表实际内容。

在C语言中,我可以通过以下内容轻松地对此进行解析:

typedef struct 
{
    byte seqNumber : 1;
    byte content   : 7;
}
MyPacket;

然后,我可以轻松地将MyPacket的输入大小写:

char* inputByte = "U"; // binary 01010101
MyPacket * myPacket = (MyPacket*)inputByte;

然后myPacket-> seqNumber = 1 myPacket-> content = 42

如何在C#中做同样的事情?

谢谢你kab

我只会使用属性。 为这两个部分创建吸气剂和吸气剂,以修改真实表示中的相应位。

class myPacket {
  public byte packed = 0;
  public int seqNumber {
    get { return value >> 7; }
    set { packed = value << 7 | packed & ~(1 << 7); } 
  }
  public int content {
    get { return value & ~(1 << 7); }
    set { packed = packed & (1 << 7) | value & ~(1 << 7); } 
  }
}

C#喜欢保持其类型简单,因此我敢打赌这是您所获得的最接近的类型。 显然,它不能使C的性能提高,但可以挽救其含义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM