我想出了这个“魔术字符串”来满足 ID3 标记规范:
ID3v2 标签大小用四个字节编码,其中最高有效位(第 7 位)在每个字节中设置为零,总共 28 位。零位被忽略,因此 257 字节长的标签表示为 $00 00 02 01。
>>> hex_val = 0xFFFFFFFF
>>> str.format('0b{0:07b}{1:07b}{2:07b}{3:07b}', ((hex_val >> 24) & 0xEF),
((hex_val >> 16) & 0xEF),
((hex_val >> 8) & 0xEF),
((hex_val >> 0) & 0xEF))
'0b11101111111011111110111111101111'
为什么不等于:
'0b11111111111111111111111111111111'
?
如果有人在乎,这似乎可行:
>>> int(str.format('0b{0:07b}{1:07b}{2:07b}{3:07b}', ((hex_val >> 24) & 0xFE),
((hex_val >> 16) & 0xFE),
((hex_val >> 8) & 0xFE),
((hex_val >> 0) & 0xFE)), 2)