Python比较数据某部分的每两个字节

1 投票
2 回答
1572 浏览
提问于 2025-04-16 18:30

在Python中,假设我运行的时候有一些数据...

search = target.readframes(2205)

每一帧数据由2个字节组成。我想比较每个2字节的值,并从中提取出最大的两个值。

比如,如果数据看起来是这样的...

0000|0001|0002|0008|0007|000F|000D|000A|00FB|00FC|00FA|00F9|00F8|00D7|00C3|0000

那么结果会提取出 000F00FC

有人能帮我实现这个吗?任何答案或有用的建议都非常感谢。

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) 来做到这一点。

不要用字符串来处理二进制数据

撰写回答