Python比较数据某部分的每两个字节
在Python中,假设我运行的时候有一些数据...
search = target.readframes(2205)
每一帧数据由2个字节组成。我想比较每个2字节的值,并从中提取出最大的两个值。
比如,如果数据看起来是这样的...
0000|0001|0002|0008|0007|000F|000D|000A|00FB|00FC|00FA|00F9|00F8|00D7|00C3|0000
那么结果会提取出 000F
和 00FC
有人能帮我实现这个吗?任何答案或有用的建议都非常感谢。
2 个回答
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)
如果是这样的话,你的问题可以更明确一些;如果不是,请随意给个差评,大家 :)
1
首先,如果你在处理二进制数据,应该只使用 bytes
对象。这要求你使用 Python 2.6 及以上版本。
举个例子
data = b"\x42\x43\x44\x45"
print(data[0:2], data[2:4])
而且,是的,你可以用普通的比较操作来处理 bytes。
我不确定你的 readframes
返回的是什么类型的对象,但如果它不是 bytes,你应该把它转换成 bytes。你可以直接用 data = bytes(obj)
来做到这一点。
不要用字符串来处理二进制数据。