我创建了Windows应用商店音频录制应用,我想在其中保存缓冲区中的字节,以便稍后处理和播放。但看起来错误的数据来自Microsoft实现的函数buffer.ToArry();
。
将IBuffer转换为数组(这是第一个82索引字节的缓冲区的示例)
82,73,70,70,0,0,0,0,87,65,86,69,74,85,78,75,28,...
字节,其中第四个索引后总是为零。如果我在整个流之后读取它的字节就像
那么相同的流 82,73,70,70,138,60,1,0,87,65,86,69,74,85,78,75,28,...
那为什么不一样呢?它应该是一样的吗?有人可以帮我这个吗?并且缓冲区中有正确的字节。
这是将缓冲区转换为字节数组的代码:
public Windows.Foundation.IAsyncOperationWithProgress<uint, uint> WriteAsync(IBuffer buffer)
{
var z = buffer.ToArray();
bytes.AddRange(z);// list of byte
return this.GetOutputStreamAt(this.Position).WriteAsync(buffer);
}
此代码从stream:
中提供正确的字节using (var dataReader = new DataReader(stream2.GetInputStreamAt(0)))
{
await dataReader.LoadAsync((uint)stream2.Size);
byte[] buffer = new byte[(int)stream2.Size];
dataReader.ReadBytes(buffer);
}