C# 将 `int[]` 数组就地转换为 `byte[]` 数组

C# in-place cast `int[]` array to `byte[]` array

我有一个某种类型的数组(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);
}