加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python – 从二进制文件中读取10位整数

发布时间:2020-12-16 22:47:25 所属栏目:Python 来源:网络整理
导读:我有一个包含10位整数流的二进制文件.我想读它并将值存储在列表中. 它使用以下代码,它读取my_file并使用整数值填充像素: file = open("my_file","rb")pixels = []new10bitsByte = ""try: byte = file.read(1) while byte: bits = bin(ord(byte))[2:].rjust(

我有一个包含10位整数流的二进制文件.我想读它并将值存储在列表中.

它使用以下代码,它读取my_file并使用整数值填充像素:

file = open("my_file","rb")

pixels = []
new10bitsByte = ""

try:
    byte = file.read(1)
    while byte:
        bits = bin(ord(byte))[2:].rjust(8,'0')
        for bit in reversed(bits):
            new10bitsByte += bit
            if len(new10bitsByte) == 10:
                pixels.append(int(new10bitsByte[::-1],2))
                new10bitsByte = ""             
    byte = file.read(1)

finally:
    file.close()

将字节读入位并将其读回“10位”字节似乎并不优雅.有没有更好的方法呢?

对于8位或16位整数,我可以使用file.read(size)并将结果直接转换为int.但是在这里,因为每个值都存储在1.25字节中,我需要像file.read(1.25)这样的东西…

最佳答案
这是一个在不使用文本字符串转换的情况下执行位操作的生成器.希望它更有效率.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读