如何从Memory <byte>中读取结构?

时间:2019-08-06 21:42:50

标签: c# struct

是否可以从struct创建Memory<byte>而不复制到数组?还是更好,创建共享相同托管内存的structMemory<byte>

Reading a C/C++ data structure in C# from a byte array非常接近,但不太适用。 Memory<T>有一个Pin方法,但它返回的是MemoryHandle而不是GCHandle

XY:我正在从套接字读取和写入Memory<byte>,在从切片获得的跨度上使用BinaryPrimitives来获取和设置各个字段。将Memory表示为struct会更好。

1 个答案:

答案 0 :(得分:5)

.Net Core / .Net Standard 2.1支持MemoryMarshal.Cast<TFrom, TTo>对从Span<TFrom>Span<TTo>的转换进行重新解释。您应该可以使用Memory<T>.Span属性获取Span,然后将其转换为struct