首页 > 解决方案 > 如何使用波形库从波形文件中获取字节数据类型的整数值

问题描述

我正在使用一些 24 位波形文件。

我从这里使用了“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 函数,但我无法从数据文件中获取每个值。

太感谢了。

标签: python-3.x

解决方案


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

虽然 bytes 文字和表示基于 ASCII 文本,但 bytes 对象实际上表现得像不可变的整数序列

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

data = b'\x00\x00\xffm'

print(data[2])
# 255

或者你可以把它全部变成一个真正的整数列表:

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

推荐阅读