繁体   English   中英

将 C# 结构元组化为 byte[]

[英]Marshal C# struct into a byte[]

有没有办法将用[StructLayout]注释的 C# 结构序列化为托管字节数组,即byte[] ,无论是预制还是分配?

我可以看到编组到非托管内存然后复制,但这很难看。

结帐MemoryMarshal.Cast<TFrom, TTo>() 它可以轻松地让您从 byte/short/int/long 数组更改为 Structures 并返回。

https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.memorymarshal?view=netcore-3.1

根据我的经验,混合托管和非托管数据就是明确定义从一个空间到另一个空间的过渡。

当我需要从本机到托管或其他方式时,第一步始终是将数据复制到“目标”空间,然后转发它。

我假设您已经熟悉互操作服务,因为您提到了复制和[StructLayout]

https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.ptrtostructure?view=netcore-3.1#System_Runtime_InteropServices_Marshal_PtrToStructure_System_IntPtr_System_Object _

如果您找到更好的方法,请告诉

暂无
暂无

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

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