gpt4 book ai didi

c++ - 读取 WAV header 呈现错误数据

转载 作者:行者123 更新时间:2023-11-28 06:12:12 25 4
gpt4 key购买 nike

我正在尝试读取 WAV 文件的内容,首先我想读取标题以查找信息。根据很多消息来源,文件的前 44 个字节包含信息。

我用十六进制编辑器检查了文件,它包含正确的数据,从“RIFF”开始,然后是数字,“WAVE”等等。

然后我尝试使用以下代码来访问 header 值: https://gist.github.com/ranisalt/1b0dbc84ea874a04db3f

问题是这会呈现完全无用的信息,就好像我试图读取文件中间的内容一样。我得到了无意义的值,与 HEX 编辑器中的值不一致:

Imgur

请注意,即使代码不完全正确,我的问题是读取的 fstream 未呈​​现文件具有的相同字节。

我还在一个内存非常小的嵌入式平台上工作,所以我需要开销最小的代码,这就是我不寻求完整的库的原因。

我尝试在读取文件之前查找到文件的位置 0,但这更糟糕,读取其他没有意义的奇怪值。

读取文件以呈现这些无意义的值可能会发生什么?

最佳答案

从文件中读取字节并将这些字节直接用作数字字节是实现定义的行为。 C++ 标准不保证整数的内部字节顺序。

首先,您需要一个函数来从文件中读取小字节序数字并将它们作为 native 整数存储在内存中。如果您已经在小端机器上,这似乎是多余的,但没有充分的理由不以这种方式阅读内容,并且有很多充分的理由不盲目地假设您正在小端架构上运行。

接下来,您需要正确遵循规范并读取大小和偏移量以解析信息,如雷米所说。盲目地假设所有 wav 文件的布局都相同,这比您想象的要糟糕得多。

就实际解决您的问题而言,一次读取一个字节的文件并打印它。确保您实际读取的是您期望的数据。有时,会发生奇怪的事情,尤其是在 Linux 上。

关于c++ - 读取 WAV header 呈现错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038721/

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