我有一个包含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)这样的东西…
最佳答案
这是一个在不使用文本字符串转换的情况下执行位操作的生成器.希望它更有效率.