为什么将IBuffer转换为数组并不能给出精确值?

时间:2015-08-18 08:58:07

标签: c# windows-phone-8 windows-runtime windows-store-apps filestream

我创建了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);
}  

0 个答案:

没有答案