我一直在研究一个嵌入式软件项目,该项目使用 FATFS 模块将传感器数据写入 SD 卡。数据的数据类型为 uint32_t(4 字节),输出为二进制文件。
我正在尝试编写一个 python 脚本来读取二进制文件(并将数据解析为 int 并写入一个新文件)。我当前的代码,
def read():
with open("INPUT1.TXT", "rb") as binary_file:
# Read the whole file at once
data = binary_file.read()
print(data)
这给了我一大块十六进制的价值,
b' \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \t \n \x0b \
x0c \r \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17
\x18 \x19 \x1a \x1b \x1c \x1d \x1e \x1f \x01 \x02 \x03
\x04 \x05 \x06 \x07 \x08 \t \n \x0b \x0c \r \x0e \x0f
\x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1
b \x1c \x1d \x1e \x1f '
打印每4个字节时,有些数字甚至丢失,
f = open("INPUT2.TXT", "rb")
try:
bytes_read = f.read(4)
while bytes_read:
print(bytes_read)
bytes_read = f.read(4)
finally:
f.close()
给出结果
b' ' #supposed to be \x00
b'\x01 '
b'\x02 '
b'\x03 '
b'\x04 '
b'\x05 '
b'\x06 '
b'\x07 '
b'\x08 '
b'\t ' #supposed to be \x09
b'\n ' #supposed to be \x0a
b'\x0b '
b'\x0c '
b'\r ' #supposed to be \x0d
b'\x0e '
b'\x0f '
b'\x10 '
b'\x11 '
b'\x12 '
b'\x13 '
b'\x14 '
b'\x15 '
b'\x16 '
b'\x17 '
b'\x18 '
b'\x19 '
b'\x1a '
b'\x1b '
b'\x1c '
b'\x1d '
b'\x1e '
b'\x1f '
但是当我在十六进制编辑器中读取二进制文件时,所有二进制文件似乎都是正确的?!
如果我想一次读取 4 个字节,然后写入一个新文件(int 类型),我该如何实现呢?
谢谢,
亨利