我正在尝试使用波形库从波形文件中读取二进制数据。数据被读取并报告为 '\x0f\x06\x0a...' 形式的字符串文字,我想将十六进制数转换为整数(你知道,以十为基数)。我遇到的问题是这些字符串并没有真正被视为十六进制数字,而是有点像 unicode 字符。
import wave
import struct
path="C:\\directory\\file.wav"
file=wave.open(path,'r')
data=file.readframes(10)
print repr(data)
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
int_dat=struct.unpack('10i',data)
当我尝试类似的东西时出现的错误
struct.unpack('i','\xff')
是 struct.unpack 需要一个长度为 4 的字符串,并且只接收一个长度为 1 的字符串。我很清楚为什么会这样,但是是否有一个用于解压缩的格式选项允许我解压缩“\xff”?
struct.unpack('i','0xff')
显然工作正常。相似地
struct.unpack('i',r'\xff')
作品。
或者,是否可以方便地将看起来像 '\xff\x01\x63...' 的字符串转换为原始字符串(尽管我不确定这是否有意义,因为 "\x" 被视为转义字符(这是正确的术语吗?)而不是字符),或格式为 '0xff0x010x63'。