C# 用位域反序列化二进制结构 - 怎么做?
我有一个以与此类似的方式定义的 C 结构:
struct TestStruct
{
uint flag1 :2;
uint flag2 :2;
uint flag3 :2;
uint flag4 :2;
uint value1;
} TestStruct;
我知道我可以使用 StructLayout
属性和 Marshal.PtrToStructure()
反序列化二进制结构。但是,有没有一种方法可以使用二进制字段(如结构中所示,其中一个值只有 2 位长)来执行此操作?
提前致谢。
I have a C struct that is defined in a way similar to this:
struct TestStruct
{
uint flag1 :2;
uint flag2 :2;
uint flag3 :2;
uint flag4 :2;
uint value1;
} TestStruct;
I know that I can deserialize a binary struct by using the StructLayout
attribute and Marshal.PtrToStructure()
. But is there a way to do this with binary fields as shown in the structure where one value is just 2 bits long?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
C# 中没有对此类结构的直接支持。您必须使用包含所有位的整数类型,然后从中提取字段。
请参阅 C# 中的位字段 中非常相似的问题的解决方案
There is no direct support for such a structure in C#. You have to use an integral type holding all the bits and extract the fields from it afterwards.
See the solution to a very similar problem at Bit fields in C#