II 想要比较具有 8 位数据的视频 file.ser 中的字节。我需要在帧的开头找到第一个非零字节。我使用 red = mm.read(1( 直接从磁盘上的文件接收一个字节,因为文件很大。我似乎 While 和 if 比较 int 数据并且在尝试比较 int(0( == b'\00 和 Byte(0(==b'\00 时无法提供正确的比较
"如果"显示出相同的效果,我试图将变量重新定义为 int 超出了我的知识范围。
mm = mmap.mmap(f.fileno(),0) #0=read the whole file
red = 0 #This value is int
print ("Red ",red) #Confirm int
while red == 0: # This works First time
red = mm.read(1) # Now red is Byte
print ("Red = ",red, "Position ", mm.tell(),"r" ) #red is b´x00
red =red + 1# this fails as well
else:
print ("Red = ",red, "Position exit ", mm.tell() ) # exit because red is Byte
仅当比较的两半都是 int 时,第一个比较才能为 True。所有其他情况在循环后退出 while。附言。进一步调查显示(红色 +1( 由于类型差异而失败。这可能是因为我不知道如何更改或使它们兼容。
现在我发现的是错误的类型
像素 = 毫米读取(1(
红色 = int.from_bytes(像素,"小"(
这使while循环正常工作,无疑将揭示下一个问题。由于它是一个字节,因此可能不需要"小",但为了完整起见,它就在那里。