Я читаю двоичный файл на 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?
Как бы вы подошли к этому?