0

ID3v2.3标签我已经整理好了,因为有4个字节,但是这里的帧头标签总共只有3个字节,而不是4个。这似乎意味着我不能struct.unpack用来获取int出它。

例如,我现在使用的标签是:名称标识符TT2\x00\x00\x0c\x00Torn Within在哪里,尺寸标识符在哪里。标签的内容是,大小为 12 个字节。 TT2\x00\x00\x0c\x00Torn Within

这也是这首歌的 ID3 标题。'ID3\x02\x00\x00\x00\x04NP',您可以在其中看到未设置编码和标志。

我已经尝试过struct.unpack('>3b', '\x00\x00\x0c'),但这只会获取每个单独字节的值。

但在那之后,我被卡住了,因为除非我\x00在尺寸标签前面加上 a,否则我无法继续。我该怎么办?

这是 ID3 标签文档http://id3.org/id3v2-00struct模块文档http://docs.python.org/library/struct.html#format-characters

编辑发现我可以这样做:int(binascii.hexlify('\x00\x00\x0c'), 16)但我认为这不是一个很好的解决方案

4

1 回答 1

1

只需\x00在解包前添加一个空字节 ( ):

>>> length = "\x00\x00\x0c"
>>> struct.unpack('>I', '\x00' + length)
(12,)

空字节将您的长度字节填充为 4 个字节,而不会改变含义。3 个 size 字节可以容纳的最大值是 2 24等于 16777216 字节;添加填充不会以任何方式改变该限制。

于 2012-07-14T20:36:27.490 回答