我如何显示一个字节的位长,而不是整数
Posted
技术标签:
【中文标题】我如何显示一个字节的位长,而不是整数【英文标题】:how do i show bit length of a byte, NOT Integer 【发布时间】:2021-11-29 17:51:49 【问题描述】:#Python 3+
我读取 bin 字节 读取大小 =1
open(ArgsFile, "rb") as f: byte = f.read(ReadSize) 打印(字节)
示例输出 'h'
显示Pos整数我会写 打印(len(bin(1)[2:])) 或否定整数 len(bin(-1)[3:])
如何打印从文件中读取字节所需的位长度?
【问题讨论】:
一个字节在 Python 中总是 8 位。表示一个字节的位数总是 8。也许问题可能是“表示正整数的最小位数是多少”? (或者可能不会;无论如何,这个问题不是很清楚。) 如果上面的“问题可能”是正确的,***.com/q/12349498/2864740 包含有用的信息。如果数字可以是负数(因此可能假定为二进制补码),则答案略有变化。 【参考方案1】:你可以试试这样的:
测试文件:
$ hexdump -C ~/test.bin
00000000 b1 23 50 c2 06 |.#P..|
00000005
test.py:
import sys
def main():
with open("test.bin", "rb") as f:
while b := f.read(1):
bits = int.from_bytes(b, sys.byteorder).bit_length()
print(b.hex(), bits)
if __name__ == "__main__":
main()
测试:
$ python test.py
b1 8
23 6
50 7
c2 8
06 3
【讨论】:
以上是关于我如何显示一个字节的位长,而不是整数的主要内容,如果未能解决你的问题,请参考以下文章