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#嵌套型结构体数据的转换