gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:51:39 26 4
gpt4 key购买 nike

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

关于C# 将 `int[]` 数组就地转换为 `byte[]` 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70235737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com