2

我正在尝试编写一个使用 java 创建 24 位 wav 文件的程序。java sound api 不支持 24 位音频,所以我试图从头开始编写文件。这开始是一种偶然的兴趣,但它已成为对位、字节、符号和块的史诗般的探索。

24 位 wav 文件的数据块是否有带符号或无符号字节?

Java 缺少无符号字节令人沮丧。我已经读过位掩码整数可用于表示无符号字节,但我想知道在文件的最终输出中将如何表示。

很抱歉分歧......我的问题是“24 位 wav 文件的数据块是否有符号或无符号字节?”

无论哪种方式,我都必须弄清楚这个已签名/未签名的业务,但我无法在我找到的参考资料中找到有关数据块的答案。

4

2 回答 2

2

我还可以确认 WAV 文件中的 24 位数据已签名(当数据以 WAVE_FORMAT_PCM 格式存储时)。更一般地说,WAVE_FORMAT_PCM 数据总是有符号的,除非它是每个样本 8 位。

于 2011-03-31T19:28:32.230 回答
1

根据这个(以及我自己的个人经验)Microsoft WAVE 文件使用 2 的补码有符号整数来表示大于 8 位的 PCM 样本。默认情况下,这些整数的字节顺序是 little-endian。

您可以使用soxiSoX在您自己的测试文件上验证这一点(您确实有一些,对吗?)。

请注意,WAVE 文件还可以保存普通 PCM 以外的音频格式。

于 2011-03-31T19:17:12.373 回答