While 语句在使用 Bytes 时比较失败似乎只需要 int
The While statement fails the compare when using Bytes It seems it only takes int
我想比较具有 8 位数据的视频 file.ser 中的字节。我需要在帧的开头找到第一个非零字节。我使用 red = mm.read(1) 直接从磁盘上的文件接收一个字节,因为文件很大。
我似乎 While 和 if 比较 int 数据并且在尝试比较 int(0) == b´\00 和 Byte(0)==b´\00
时未能提供正确的比较
"If" 显示了相同的效果,我试图将变量重新定义为 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。 PS.Further 调查显示 (red +1) 由于类型差异而失败。这可能是因为我不知道如何更改或使它们兼容。
我现在找到的是错误的类型
像素 = mm.read(1)
红色=int.from_bytes(像素,"little")
这使 while 循环起作用,并且无疑会揭示下一个问题。因为它是一个字节 "little" 可能不是必需的,但为了完整起见,它是必需的。
我想比较具有 8 位数据的视频 file.ser 中的字节。我需要在帧的开头找到第一个非零字节。我使用 red = mm.read(1) 直接从磁盘上的文件接收一个字节,因为文件很大。 我似乎 While 和 if 比较 int 数据并且在尝试比较 int(0) == b´\00 和 Byte(0)==b´\00
时未能提供正确的比较"If" 显示了相同的效果,我试图将变量重新定义为 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。 PS.Further 调查显示 (red +1) 由于类型差异而失败。这可能是因为我不知道如何更改或使它们兼容。
我现在找到的是错误的类型
像素 = mm.read(1)
红色=int.from_bytes(像素,"little")
这使 while 循环起作用,并且无疑会揭示下一个问题。因为它是一个字节 "little" 可能不是必需的,但为了完整起见,它是必需的。