C#用位域反序列化二进制结构 - 怎么办?

时间:2011-02-09 19:12:55

标签: c# c struct binary-deserialization

我有一个C结构,其定义方式类似于:

struct TestStruct
{
    uint flag1 :2;
    uint flag2 :2;
    uint flag3 :2;
    uint flag4 :2;

    uint value1;
} TestStruct;

我知道我可以使用StructLayout属性和Marshal.PtrToStructure()反序列化二进制结构。但有没有办法用二进制字段来实现这一点,如结构中所示,其中一个值只有2位长?

提前致谢。

1 个答案:

答案 0 :(得分:1)

C#中没有这种结构的直接支持。您必须使用包含所有位的整数类型,然后从中提取字段。

Bit fields in C#

查看解决方案中非常类似的问题