python-3.x - 如何使用波形库从波形文件中获取字节数据类型的整数值
问题描述
我正在使用一些 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 函数,但我无法从数据文件中获取每个值。
太感谢了。
解决方案
您在这里拥有的是一个字节对象,并且如文档中所述:
虽然 bytes 文字和表示基于 ASCII 文本,但 bytes 对象实际上表现得像不可变的整数序列
因此,您可以通过索引访问任何字节,您将获得一个整数:
data = b'\x00\x00\xffm'
print(data[2])
# 255
或者你可以把它全部变成一个真正的整数列表:
print(list(data))
# [0, 0, 255, 109]
推荐阅读
- reactjs - react js material-ui native select设置默认值不起作用
- rust - 不使用 Rust 中的变量无法打印 i64 类型的绝对值
- c# - Azure Functions,无法加载文件或程序集
- javascript - 重新渲染 FlatList 的项目
- python - 尝试建立客户端/服务器连接时出现语法错误
- python - Python 动态编程 TSP - 打印路由
- google-apps-script - 访问网络应用宏链接的人可以访问我的脚本或电子表格吗?
- python - For 语句增量并跳过其余代码
- haskell - 如果已经自行构建,请避免重新构建本地依赖项
- python - Pandas:如何将行转换为一个字符串?