Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么将IBuffer转换为阵列不会';你不能给出准确的数值吗?_C#_Windows Phone 8_Windows Runtime_Windows Store Apps_Filestream - Fatal编程技术网

C# 为什么将IBuffer转换为阵列不会';你不能给出准确的数值吗?

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,

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