Python3如何获取从文件读取的byte类型数据的比特位长度(非Integer)
实现方法
分两种需求场景对应处理:
- 需求是获取byte数据存储占用的固定比特长度
存储层面1字节固定等于8比特,你读取了ReadSize个字节,直接按公式计算即可:
你当前读取单字节的场景下,该值固定为8。storage_bit_length = ReadSize * 8 - 需求是获取byte对应数值的有效比特长度(即去掉前导0后的实际有效比特位数)
先将读取到的bytes对象转为整数,直接调用整数内置的bit_length()方法即可,比手动切割bin()返回的字符串更简洁高效:
示例验证:你示例中输出的ReadSize = 1 with open(ArgsFile, "rb") as f: byte_data = f.read(ReadSize) # 单字节bytes转无符号整数 int_value = int.from_bytes(byte_data, byteorder="big", signed=False) # 计算有效比特长度 effective_bit_len = int_value.bit_length() print(effective_bit_len)b'h'对应的ASCII码为104,二进制是01101000,调用上述方法返回的有效比特长度为7,符合预期。
多字节场景适配:如果后续需要读取多字节数据,只需要修改
ReadSize即可,int.from_bytes支持任意长度的bytes转换,bit_length()会自动计算对应整数值的有效比特位数;如果需要处理带符号的字节数据,将signed参数改为True即可。
内容的提问来源于stack exchange,提问作者Brett Palmer
相关产品推荐
相关产品推荐

