Mat*_*son 5
要编写,您可以执行以下操作:
public static void WriteArrayToStream<T>(Stream output, T[] array) where T: unmanaged
{
var span = array.AsSpan();
var bytes = MemoryMarshal.AsBytes(span);
output.Write(bytes);
}
对于阅读,您可以执行以下操作:
public static (T[] Result, int Count) ReadArrayFromStream<T>(Stream input, int n) where T: unmanaged
{
T[] result = new T[n];
var span = result.AsSpan();
var bytes = MemoryMarshal.AsBytes(span);
int count = input.Read(bytes);
return (result, count/Marshal.SizeOf<T>());
}
请注意,它返回一个元组,因为如果没有足够的数据可用,则只有第一个Count
元素将具有有效数据。
这是一个显示写入和读取double[]
数组的示例:
MemoryStream mem = new MemoryStream();
double[] data = Enumerable.Range(0, 100).Select(x => (double)x).ToArray();
WriteArrayToStream(mem, data);
Console.WriteLine(mem.Length); // 800
mem.Position = 0;
var (array, count) = ReadArrayFromStream<double>(mem, 200);
Console.WriteLine(count); // 100
Console.WriteLine(array[42]); // 42
更多推荐
是一个,如何将,结构,byte
发布评论