[英]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.