如何使用Java和没有javax.sound来确定8位WAV文件是已签名还是未签名

时间:2012-05-24 04:36:43

标签: java bytearray wav unsigned signed

我只需要通过读取文件就知道8位的“.wav”是有符号还是无符号的PCM。我不能使用“javax.sound.sampled。*”或AudioSystem库。

2 个答案:

答案 0 :(得分:6)

在wav文件中,8位样本存储为无符号字节,范围从0到255。 16位样本以2的补码存储为有符号整数。

答案 1 :(得分:4)

8位(或更低)WAV文件始终是无符号的。始终签署9位或更高位:

  

每个样本都包含在整数 i 中。 i 的大小是包含指定样本大小所需的最小字节数。首先存储最低有效字节。表示采样幅度的位存储在 i 的最高有效位中,其余位设置为零。

     

例如,如果样本大小(记录在 nBitsPerSample 中)为12位,则每个样本都以两字节整数存储。设置第一(最低有效)字节的最低有效4位   为零。

     

各种尺寸的PCM波形样本的数据格式以及最大值和最小值如下:

     

enter image description here

Multimedia Programming Interface and Data Specifications 1.0 - IBM / Microsoft,1991年8月