将不同类型的列表写入二进制文件

2024-09-27 21:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个list变量airMod,由不同类型的数据组成:char、uint32和float。以下是在我的visual studio代码调试模式下的外观:

enter image description here

现在我想把它保存在一个二进制文件(原始缓冲区)中。我将用C++来逐字节处理它。我在想我该怎么做。我搜索了应该如何做,但主要是保存包含相同数据类型的列表的解决方案(例如bytearrayto_byte…)。你知道吗

我想保存数据,然后用C++处理(({ }))。非常感谢。你知道吗


Tags: 文件数据代码类型二进制floatlist缓冲区
1条回答
网友
1楼 · 发布于 2024-09-27 21:23:52

使用内置的struct模块,如下所述:https://docs.python.org/3/library/struct.html

您可以使用它将一组对象(通常是数字)序列化为字节。例如:

import struct

with open('outfile', 'wb') as out:
    out.write(struct.pack('<if', 123, 456.789))

将编写一个8字节的文件,可以用C或C++结构来解释,假设你在一个小的字节机器上,比如x86:< /p>

struct MyRecord {
    int32_t x;
    float y;
};

在C或C++中定义这样的结构时,必须注意字段的对齐、填充和连接。__attribute__((packed))__在使用GCC或Clang并且可能有未对齐的字段时非常有用。你知道吗

Python中的另一个选项是使用NumPy“结构化数组”。您可以这样创建一个:

import numpy as np
rec = np.array([100, 456.789], [('x', 'i4'), ('y', 'f4')])
with open('outfile', 'wb') as out:
    out.write(rec.tobytes())

相关问题 更多 >

    热门问题