я придумал эту «волшебную строку» для удовлетворения ID3 тегов спецификации:Python битовые операции путаница
Размер тегов 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)
>>> str.format ('0b {0: 07b} {1: 07b} {2: 07b} {3: 07b}', ((hex_val >> 24) & 0x7F), ((hex_val >> 16) & 0x7F), ((hex_val >> 8) & 0x7F), ((hex_val >> 0) & 0x7F)) '0b1111111111111111111111111111' Извините, сбив с толку E и 7s. – bsl
Напишите это как ответ! –