繁体   English   中英

如何在C#中将结构数组转换为字节数组?

[英]How to convert Struct Array to Byte Array in c#?

使用Buffer.BlockCopy()可以很容易地将原始类型转换为字节。

但是,如果我有一个DateTime数组,应该使用哪个函数将DateTime []转换为byte []?

如果我的结构大小恒定(这意味着我可以使用Marshal将结构转换为byte []),应该使用哪种方式将T [](结构数组)转换为byte []?

如果您正在寻找底层内存表示形式的副本,那么一种方法是仅访问unsafe的数据-类似于:

// invent some data
DateTime[] original = new DateTime[10];
for (int i = 0; i < original.Length; i++)
    original[i] = new DateTime(2014, 1, i + 1);

byte[] blob = new byte[original.Length * sizeof(DateTime)];

fixed (DateTime* src = original)
fixed (byte* dest = blob)
{
    DateTime* typedDest = (DateTime*)dest;
    for(int i = 0; i < original.Length; i++)
    {
        typedDest[i] = src[i];
    }
} 

然而,这是巨大的取决于你所期望的内容byte[]要算账,你打算用它做什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM