gpt4 book ai didi

c# - 字节数组转int16数组

转载 作者:行者123 更新时间:2023-12-02 12:52:23 25 4
gpt4 key购买 nike

是否有更有效的方法将字节数组转换为 int16 数组?或者有没有办法使用 Buffer.BlockCopy 将每个两个字节复制到 int16 数组???

public static int[] BYTarrToINT16arr(string fileName)
{
try
{
int bYte = 2;
byte[] buf = File.ReadAllBytes(fileName);
int bufPos = 0;
int[] data = new int[buf.Length/2];
byte[] bt = new byte[bYte];
for (int i = 0; i < buf.Length/2; i++)
{
Array.Copy(buf, bufPos, bt, 0, bYte);
bufPos += bYte;
Array.Reverse(bt);
data[i] = BitConverter.ToInt16(bt, 0);
}
return data;
}
catch
{
return null;
}
}

最佳答案

使用FileStreamBinaryReader。像这样的事情:

var int16List = List<Int16>();
using (var stream = new FileStream(filename, FileMode.Open))
using (var reader = new BinaryReader(stream))
{
try
{
while (true)
int16List.Add(reader.ReadInt16());
}
catch (EndOfStreamException ex)
{
// We've read the whole file
}
}
return int16List.ToArray();

您还可以将整个文件读入byte[],然后根据需要使用MemoryStream 而不是FileStream

如果您这样做,那么您还可以预先适当调整List的大小并使其更加高效。

关于c# - 字节数组转int16数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865852/

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