13

我目前正在尝试破译 WAV 文件。从标头到 PCM 数据。

我找到了一个 PDF ( http://www.tdt.com/T2Support/technical_notes/tn0132.pdf ),详细介绍了 WAV 文件的结构,并且我已经能够使用以下方法提取并理解适当的标题数据Ghex2。但我的问题是:

为什么整数字节向后存储?即十二月。20 存储为 0x14000000 而不是 0x00000014。

PCM数据的整数是否也向后存储?

4

2 回答 2

14

WAV 文件是 little-endian(最低有效字节优先),因为该格式起源于在基于英特尔处理器的机器上运行的操作系统,这些机器使用 little-endian 格式存储数字。

如果您认为它是有道理的,因为如果您想将一个长整数转换为一个短整数甚至一个字符,那么起始地址保持不变,您只需查看更少的字节。

因此,对于 16 位以上的编码,小端格式也将用于 PCM。这非常方便,因为您可以将它们作为整数拉入。不要忘记,如果它们是 16 位,它们将被存储为二进制补码有符号整数,但如果它们是 8 位,则不会。(有关详细信息,请参阅http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html )

于 2010-09-11T20:31:28.543 回答
3

“倒退”是主观的。有些机器是大端的,有些是小的。在文件格式和网络协议等面向字节的上下文中,顺序是任意的。一些格式喜欢指定 big-endian 或 little-endian,另一些则喜欢灵活并接受任何一种格式,并带有一个标志来指示正在使用的格式。

看起来像 WAV 文件,就像 little-endian。

于 2010-09-11T20:08:09.933 回答