C# 为什么将IBuffer转换为阵列不会';你不能给出准确的数值吗?
我已经创建了Windows应用商店音频录制应用程序,我想在其中保存缓冲区中的字节,以便以后处理和播放。但看起来错误的数据来自微软实现的函数C# 为什么将IBuffer转换为阵列不会';你不能给出准确的数值吗?,c#,windows-phone-8,windows-runtime,windows-store-apps,filestream,C#,Windows Phone 8,Windows Runtime,Windows Store Apps,Filestream,我已经创建了Windows应用商店音频录制应用程序,我想在其中保存缓冲区中的字节,以便以后处理和播放。但看起来错误的数据来自微软实现的函数buffer.ToArry() 将IBuffer转换为array给出(这是第一个索引字节为82的缓冲区示例) 82,73,70,70,0,0,0,0,87,65,86,69,74,85,78,75,28, 字节,其中第四个索引之后始终为零。对于同一个流,如果我在整个流之后读取它,它的字节如下 82,73,70,70138,60,1,0,87,65,86,69,
buffer.ToArry()代码>
将IBuffer转换为array给出(这是第一个索引字节为82的缓冲区示例)
82,73,70,70,0,0,0,0,87,65,86,69,74,85,78,75,28,
字节,其中第四个索引之后始终为零。对于同一个流,如果我在整个流之后读取它,它的字节如下
82,73,70,70138,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);
}
ToArray()到底有什么问题?是的,通过使用buffer.ToArray()给出82,73,70,0,0,0,0,87,65,86,69,74,85,78,75,28,。。。(用于实时字节转换)和第二个代码给出82,73,70,70138,60,1,0,87,65,86,69,74,85,78,75,28,…(在停止流写入后获取)为什么存在不同的值?即使对于同一个流源?我已经为自己编写了部分代码来尝试if ToArray()工作正常,但您应该发布一些代码,说明输入内容和处理方式。以下是我用来测试ToArray()是否工作的代码:ToArray()到底有什么问题?是的,通过使用缓冲区。ToArray()给出82,73,70,70,0,0,0,0,0,87,65,86,69,74,85,78,75,28,。。。(用于实时字节转换)和第二个代码给出82,73,70,70138,60,1,0,87,65,86,69,74,85,78,75,28,…(在停止流写入后获取)为什么存在不同的值?即使对于同一个流源?我已经为自己编写了部分代码来尝试if ToArray()工作正常,但您应该发布一些代码,说明输入内容和处理方式。下面是我用来测试ToArray()是否工作的代码:
using (var dataReader = new DataReader(stream2.GetInputStreamAt(0)))
{
await dataReader.LoadAsync((uint)stream2.Size);
byte[] buffer = new byte[(int)stream2.Size];
dataReader.ReadBytes(buffer);
}