我正在用 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的计算?
你会如何处理这个问题?