if-statement - 使用 Bytes 时,While 语句无法比较它似乎只需要 int
问题描述
我想比较具有 8 位数据的视频 file.ser 中的字节。我需要在帧的开头找到第一个非零字节。我使用 red = mm.read(1) 直接从磁盘上的文件接收一个字节,因为文件很大。我似乎在尝试比较 int(0) == b´\00 和 Byte(0)==b´\00 时比较 int 数据并未能提供正确的比较
“如果”显示了相同的效果,我尝试将变量重新定义为 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.进一步调查显示(红色+1)由于类型差异而失败。这可能是因为我不知道如何更改或使它们兼容。
解决方案
这是我现在发现的错误类型
像素 = mm.read(1)
红色 = int.from_bytes(像素,“小”)
这使 while 循环正常工作,无疑将揭示下一个问题。由于它是一个字节,因此可能不需要“小”,但为了完整起见,它是必需的。
推荐阅读
- java - 如何在 Kotlin 的 Common pool 下创建单线程协程上下文?
- javascript - 一个多级向上 Css 选择器
- javascript - JavaScript 上的文本节点有时不会合并
- botframework - Microsoft Bot Framework 何时完成对 Skype For Business 频道的预览并启动生产?
- python - Pandas 未正确安装在 venv 中
- shell - 文本处理:比较两个排序的文件并排除不同的行,基于第二列
- css - 仅在 iPad Safari 上定位 css
- java - 如何从用户界面通过 ftp 服务器上传文件?
- onenote-api - 通过 API 共享 OneNote Notebook
- r - 如何在 R 中获取股票的财务信息