wave.readframes返回什么?

时间:2010-01-14 10:54:26

标签: python wave

我通过以下方式为变量x赋值:

import wave
w = wave.open('/usr/share/sounds/ekiga/voicemail.wav', 'r')
x = w.readframes(1)

当我输入x时,我得到:

'\x1e\x00'

所以x得到了一个值。但那是什么?它是十六进制的吗? type(x)type(x[0])告诉我xx[0]字符串。任何人都可以告诉我应该如何解释这个字符串?我可以将它们转换为整数吗?

4 个答案:

答案 0 :(得分:7)

交互式解释器回应那样的不可打印的字符。该字符串包含两个字节,0x1E和0x00。您可以将其转换为struct.unpack("<H", x)的(WORD大小)整数(小端!)。

答案 1 :(得分:1)

这是一个两字节的字符串:

>>> x='\x1e\x00'
>>> map(ord, list(x))
[30, 0]
>>> [ord(i) for i in x]
[30, 0]

答案 2 :(得分:0)

此字符串表示字节。我猜你可以将它们变成一个带struct包的整数,它允许解释字节串。

答案 3 :(得分:0)

是的,它是十六进制的,但它的含义取决于wav文件的其他输出,例如样本宽度和通道数。您可以通过两种方式读取数据:2个通道和1个字节的采样宽度(立体声)或1个通道和2个字节的采样宽度(单声道声音)。使用x.getparams():第一个数字是通道数,第二个数字是样本宽度。

This Link解释得非常好。

相关问题