none
PCM编码的WAV文件中的PCM数据是如何计算得出的 RRS feed

  • 问题

  •  

    用软件生成的一个PCM编码的WAV的声音波形文件.参数: 频率:1000Hz ;  幅值:1 ; 采样率: 8000  ;  采样位数:16  单通道

    得到的WAV文件用"UltraEdit-32"读取出的数据如下(开头部分):

    *******************************************

    5249 4646 307D 0000 5741 5645 666D 7420
    1000 0000 0100 0100 401F 0000 803E 0000
    0200 1000 6661 6374  0400 0000 0000 0000
    6461 7461 007D 0000
                                      0000 1264 C97C 8937
    77C8 3783 EE9B 0000 0000 1264 C97C 8937
    77C8 3783 EE9B 0000 0000 1264 C97C 8937
    77C8 3783 EE9B 0000 0000 1264 C97C 8937
    77C8 3783 EE9B 0000 0000 1264 C97C 8937
    77C8 3783 EE9B 0000

    *******************************************
    说明:上面的数据中:第一部分为WAV的头,后面的为采集的数据.

    WAV的头数据的各部分含义我已经弄清楚了,需要了解的请见: http://www.vihome.net/bbs/viewthread.php?tid=11147&extra=page%3D1

    关键是后面的数据是如何编码的?

    数据说明:一个周期是取8个点,从WAV文件对应读出的数据为:
    0000 1264 C97C 8937 77C8 3783 EE9B 0000

    说明两个字节对应一个点的数据(高低位互换后,如:1264(存储时的样子),实际数值为:6412(16进制),他们对应的10进制浮点数如下:
    0  0.781831482452  0.9749279121932  0.4338837391869  -0.4338837390251  -0.9749279121533  -0.781831482564  -1.79586368671E-10

    如: 0.781831482452(10进制浮点数)  对应: 6412(16进制数)
    问:
        1  是如何编码实现上面的转换的?
        2  如何从16进制数得到对应的浮点数?(解码)
        3  如何从浮点数得到对应的16进制数?(编码)
    2008年11月19日 1:12

全部回复