我一直在尝试创建波形图像,并且从.wav
文件使用song = wave.open()
and song.readframes(1)
,返回:
b'\x00\x00\x00\x00\x00\x00'
我怎样才能把它分成三个独立的部分,例如b'\x00\x00'
, b'\x00\x00'
, b'\x00\x00'
因为每个帧由 3 个部分组成(每个部分有 2 个字节宽),所以我需要每个单独部分的值才能形成波形。
您可以使用切片byte
对象:
>>> value = b'\x00\x01\x00\x02\x00\x03'
>>> value[:2]
b'\x00\x01'
>>> value[2:4]
b'\x00\x02'
>>> value[-2:]
b'\x00\x03'
然而,在处理这些框架时,您可能还想了解memoryview() objects http://docs.python.org/3/library/stdtypes.html#memoryview;这些可以让您将字节解释为 C 数据类型,而无需您进行任何额外的工作,只需在底层字节上投射“视图”即可:
>>> mv = memoryview(value).cast('H')
>>> mv[0], mv[1], mv[2]
256, 512, 768
The mv
对象现在是一个内存视图,将每 2 个字节解释为无符号短整型;所以它现在的长度为 3,每个索引都是一个基于底层字节的整数值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)