如何使用wave库从wave文件中的字节数据类型获取整数值

时间:2019-02-01 22:31:32

标签: python-3.x

我正在处理一些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函数,但是我无法从数据文件中获取每个值。

非常感谢您。

1 个答案:

答案 0 :(得分:0)

您在这里拥有的是一个bytes对象,并且,如文档中所述:

  

虽然字节文字和表示形式基于ASCII文本,   个字节对象实际上就像不可变的整数序列

因此,您可以通过索引访问任何字节,您将获得一个整数:

data = b'\x00\x00\xffm'

print(data[2])
# 255

或者您可以将其全部转换为真实的整数列表:

print(list(data))
# [0, 0, 255, 109]