Я читаю двоичный файл в python, и в документации по формату файла говорится:
Флаг (в двоичном формате) Значение
1 nnn nnnn Указывает, что следует один байт данных, который следует дублировать nnn nnnn (максимум 127) раз.
0 nnn nnnn Указывает, что далее следует nnn nnnn байтов данных изображения (максимум 127 байтов) и что дубликатов нет.
n 000 0000 Поле конца строки. Указывает на конец строки записи. Значение n может быть равно нулю или единице. Обратите внимание, что поле конца строки обязательно и что оно отражено в поле записи длины строки, упомянутом выше.
При чтении файла я ожидаю, что байт, в котором я нахожусь, вернет 1 nnn nnnn
, где часть nnn nnnn
должна быть 50.
Я смог сделать это, используя следующее:
flag = byte >> 7
numbytes = int(bin(byte)[3:], 2)
Но вычисление numbytes кажется дешевым обходным путем.
Могу ли я сделать больше битовой математики, чтобы выполнить расчет numbytes?
Как бы вы подошли к этому?