如何解压 ID3 header 的大小

How to unpack ID3 header's size

我正在尝试使用 Python 2.7 解压缩 ID3v2.3 header。但是,我并不完全理解 MP3 格式的前 10 个字节。例如:

49 44 33 03 00 00 | 00 00 21 76 | 54 41 4C 42
.I .D .3 .3 .0    | RawSize     | Size

使用 Synalyze it! 我可以看到 RawSize0x2176Size4342

偏移量 4352 是 MPEG 数据帧的开始位置。我需要知道怎么做 54 41 4C 42 被转换为 4342 因为当我尝试时:

>>> unpack('i', '\x54\x41\x4C\x42')
(1112293716,)

反正看起来不像 4352!

我应该如何阅读它们?

首先,你给了 14 个字节,而不是 10 个。

其次,您完全读错了尺码。该大小使用解压缩的 7 位值而不是 8 位值。

>>> 0x00 << 21 | 0x00 << 14 | 0x21 << 7 | 0x76
4342