C#嵌套结构体数据的转换

C#嵌套结构体数据的转换

今天在看微信公众号时,看到一篇文章,是关于C#结构体转化的,因为自己在工作中又遇到过这种问题。并且自己还不是很熟悉。于是就记录一下.

这是关于struct如何转化为bool类型的文章。作者已经将它上传到Nuget包中,我们直接使用Nuget包下载即可。

在项目中首先定义几个嵌套结构体如下:

 public struct TestStruct
        { 
            public string strName;
            public int nAge;
            public FirstNode firstNode;
            public byte[] data;
        }

        public struct FirstNode
        {
            public char[] Chars;
            public SecondNode secondNode;
            public string strPrograms;
        }

        public struct SecondNode
        {
            public int nNumber;
            public ThirdNode[] Others;
        }

        public struct ThirdNode
        {
            public int[] LastData;
        }

结构体初始化的代码如下:

 TestStruct test = new TestStruct();
            test.strName = "Jack";
            test.nAge = 20;
            test.firstNode = new FirstNode();
            test.firstNode.Chars = new char[] {'J','a','c','k'};
            test.firstNode.strPrograms = "C#";
            test.data = new byte[] { 1,2,3,0x04,0x05};
            test.firstNode.secondNode = new SecondNode();
            test.firstNode.secondNode.nNumber = 2;
            test.firstNode.secondNode.Others = new ThirdNode[2];
            test.firstNode.secondNode.Others[0] = new ThirdNode()
            {

                LastData = new int[]{9,9,6 }
            };
            test.firstNode.secondNode.Others[1] = new ThirdNode()
            {

                LastData = new int[] { 0, 0, 7}
            };

下面从Nuget下载Wesky.Net.OpenTools,我已经下载好了,如图:
在这里插入图片描述

下面在项目中具体使用这个工具:

  var convertor = StructConvertFactory.CreateConvertor<TestStruct>();
  var data = convertor.StructToBytes(test);
  var result = convertor.BytesToStruct<TestStruct>(data);

调试代码,首先调用结构体转bool类型StructToByte,结果如下:

在这里插入图片描述
可以看到,这个结构体总共有75个字节。

然后调用ByteToStruct将bool类型转回结构体。结果如下:
在这里插入图片描述
可以看到bool已经转回原来的结构体了,内容保持不变。

好了,今天就分享到这里。

原文地址:C#嵌套型结构体数据的转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值