我通过以下方式为变量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])
告诉我x
和x[0]
字符串。任何人都可以告诉我应该如何解释这个字符串?我可以将它们转换为整数吗?
答案 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解释得非常好。