我正在处理以下python代码:
import wave
from bitstring import BitArray
w = wave.open('file.wav','rb')
totalFrames = w.getnframes() #Total number of samples
bytesData = w.readframes(totalFrames)
binData = BitArray(bytesData)
bin2Data = (binData.bin)
file.wav有4882个样本,采样率为44.1KHz。
我的目标是能够获得我从file.wav获得的二进制数据的赞美。 ' binData.bin'给我通过\x00\x00N\x00n\xff..
但以字符串格式获得的字节(w.readframes
)的二进制形式。
我用它来获得2' scompliment:
2comp = ~(bin2Data) + 0b1
但是徒劳无功。它会显示以下错误:
Traceback (most recent call last):
File "speaker_bin.py", line 16, in <module>
bin2Data = ~((binData.bin)) + 0b1
TypeError: bad operand type for unary ~: 'str'
我尝试int(bin2Data)
转换它但它不起作用(它根本不会打印任何内容。我猜是因为数据的大小。)
我做错了什么?
我真的很感激任何反馈。 (即使是朝着正确方向的简单推动)
答案 0 :(得分:0)
您需要使用
int(binData.bin, 2)
要创建一个int,您可以将base指定为第二个参数,否则它只会假设该值在base 10中。从docs可以看出,默认基数为10,这是为什么你需要指定10以外的其他基数
对0b1