While 语句在使用字节时无法进行比较 似乎只需要 int



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循环正常工作,无疑将揭示下一个问题。由于它是一个字节,因此可能不需要"小",但为了完整起见,它就在那里。

相关内容

  • 没有找到相关文章

最新更新