在python中,假设我运行时有数据......
search = target.readframes(2205)
每个帧由2个字节组成。我想比较每个2字节值并提取范围内最高的2个值。
例如,如果数据看起来像这样......
0000|0001|0002|0008|0007|000F|000D|000A|00FB|00FC|00FA|00F9|00F8|00D7|00C3|0000
然后结果会提取000F
和00FC
有人可以帮助我实现这一目标。任何答案或有用的建议都会很棒。
答案 0 :(得分:1)
首先,如果处理二进制数据,则应仅使用bytes
个对象。它们需要Python 2.6 +。
实施例
data = b"\x42\x43\x44\x45"
print(data[0:2], data[2:4])
是的,你可以使用普通的比较操作和字节。
我不确定readframes
是否返回了这种对象,但如果设计不是字节,则应将其转换为字节。您可以使用data = bytes(obj)
。
不要使用字符串处理二进制数据。
答案 1 :(得分:0)
我理解您处理音频数据(假设target
是wave.Wave_read
个对象),并希望找到每个频道的最大值。
import audioop
channel_l= audioop.tomono(search, 2, 1.0, 0.0)
channel_r= audioop.tomono(search, 2, 0.0, 1.0)
max_l= audioop.max(channel_l, 2)
max_r= audioop.max(channel_r, 2)
如果是,您应该更明确地提出问题;如果没有,请随意投票,因为没有用,人们:)