参考:链接
工作中遇到解析和写byte报文的问题,领导建议使用位域,但是C#中没有位域这一说;
百度后了解到StructLayout属性可以近似实现这个功能,但是无法像C++中union一样操作到byte位
下面是实现方法:
[StructLayout(LayoutKind.Explicit, Size = 4)]
struct UninoCSharp
{
//设置联合体的每一位
[FieldOffset(0)]
public byte b0;
[FieldOffset(1)]
public byte b1;
[FieldOffset(2)]
public byte b2;
[FieldOffset(3)]
public byte b3;
//数组
[FieldOffset(0)]
public byte[4] array;
}
通过设置每一个byte,就可以直接得到array;
或者复制一个array,就可以得到每一个byte;