Edw*_*vey 2 .net c# arrays serialization casting
我有一个某种类型的数组(short[]、int[]或类似的基本类型)。我想通过流发送它,所以我需要它是byte[]. 标准解决方案似乎是创建一个新byte[]数组,并使用BitConverter. 这种方法的问题是性能和内存使用 - 它需要分配所有新内存,复制到新内存中,然后将其写入byte[]流。
我非常想将数组的原始后备内存用作int[]数组byte[],这样我就可以就地发送它。为了这种非常明显且非常显着的性能差异,我愿意强制执行发送和接收系统必须具有相同字节序的要求。
有没有某种方法可以将数组int[]或类似数组视为byte[]就地数组?
如果您可以使用Span<T>(.net core 3+):
void Send(int[] data)
{
ReadOnlySpan<byte> byteRef = MemoryMarshal.AsBytes(data.AsSpan());
_stream.Write(byteRef);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
914 次 |
| 最近记录: |