我正在处理一些wave 24位wave文件。
我从这里使用了{wavread“函数:https://gist.github.com/WarrenWeckesser/7461781。
下面的代码是一个示例:
示例代码
audio1 = wave.open('13file4.wav')
rate = audio1.getframerate()
nchannels = audio1.getnchannels()
sampwidth = audio1.getsampwidth()
nframes = audio1.getnframes() #.shape[0]
data = audio1.readframes(nframes)
audio1.close()
在“数据”中,您可以找到以下内容:b'\ x00 \ x00 \ xffm'
\ x00,\ x00和\ xffm为十六进制格式的地方。
有没有办法分别获取每个值并将其转换为int值?
我知道有int.from_bytes函数,但是我无法从数据文件中获取每个值。
非常感谢您。
答案 0 :(得分:0)
您在这里拥有的是一个bytes对象,并且,如文档中所述:
虽然字节文字和表示形式基于ASCII文本, 个字节对象实际上就像不可变的整数序列
因此,您可以通过索引访问任何字节,您将获得一个整数:
data = b'\x00\x00\xffm'
print(data[2])
# 255
或者您可以将其全部转换为真实的整数列表:
print(list(data))
# [0, 0, 255, 109]