python - 在python中读取二进制文件时跳过第一个字节
问题描述
我想读入一个二进制文件并从其内容中生成 ac 初始化程序。但是不知何故,我的读取过程似乎总是跳过第一个字节。你能帮我为什么会这样吗?
该文件以二进制文件中的 0x4c 开头,但我从未在以下 python 代码的输出中看到这一点:
f = open("GoldenFPGA.bit", "rb")
count = 0
print("#ifndef __CL_NX_BITSTREAM_HEADER_H");
print("#define __CL_NX_BITSTREAM_HEADER_H");
print("const uint8_t cl_nx_bitstream[] = ");
print("{");
print(" 0x7A, 0x00, 0x00, 0x00,");
print(" ", end='')
try:
byte = f.read(1)
while byte:
# Do stuff with byte.
byte = f.read(1)
if byte:
print("0x" + byte.hex() + ", ", end='')
count = count + 1
if count % 8 == 0:
print("\n ", end='')
finally:
f.close()
print("\n};");
print("#endif");
感谢您对此问题的任何帮助。
解决方案
问题是:
您在循环之前读取了第一个字节,当您进入循环时,您读取了另一个字节-> 导致您跳过第一个字节。
您应该将其更改为:
f = open("GoldenFPGA.bit", "rb")
count = 0
print("#ifndef __CL_NX_BITSTREAM_HEADER_H");
print("#define __CL_NX_BITSTREAM_HEADER_H");
print("const uint8_t cl_nx_bitstream[] = ");
print("{");
print(" 0x7A, 0x00, 0x00, 0x00,");
print(" ", end='')
try:
byte = f.read(1)
while byte:
# Do stuff with byte.
if byte:
print("0x" + byte.hex() + ", ", end='')
count = count + 1
if count % 8 == 0:
print("\n ", end='')
# read next byte
byte = f.read(1)
finally:
f.close()
print("\n};");
print("#endif");
推荐阅读
- php - Symfony 3.4 翻译的路由要求 (JMSi18nRoutingBundle)
- javascript - 如何在 React 的 JSX 中编写 for 循环?
- angular - Angular 7 - 设置路线导航之间的时间间隔
- angular - MatExpansionPanel expression has changed after it was checked error 'mat-expanded: true'
- sql-server - 在同一事务中删除锁定插入?
- spring - Spring StateMachine - 从数据库配置
- pdf - 如果源是 pdf 类型,则将 ps 转换为 pdf 的问题
- python - 如何为 Django 项目提供服务,以便并行处理许多传入的 GET 请求
- react-native - React Native ScrollView 不滚动
- python-3.x - 在 statsmodels ANOVA 中考虑方差的非同质性(异方差)