gpt4 book ai didi

c - 使用定义结构的 C 头文件解析数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:23 25 4
gpt4 key购买 nike

我有一个这样的 C 头文件:

#define NAME_LEN 8
#define DEV_MAX 4

typedef struct __device
{
int iDevID;
int iDevSN;
}DEVICE;

typedef struct __person
{
int iID;
char acName[NAME_LEN];
DEVICE aDevices[DEV_MAX];
}PERSON;

二进制数据文件可能是这样的:

0000000 01 00 08 00 4a 61 63 6b 00 00 00 00 0a 00 00 00
0000020 11 11 11 11 0b 00 00 00 22 22 22 22 0c 00 00 00
0000040 33 33 33 33 0d 00 00 00 44 44 44 44

我所需要的只是使用上面的 C 头文件用字段名称可视化数据表示....这样就好了……

m--iID : 0x80001
m--acName : Jack
m--aDevices[]
|--aDevices[0]
|--|--iDevID : 0xa
|--|--iDevSN : 0x11111111
|--aDevices[1]
|--|--iDevID : 0xb
|--|--iDevSN : 0x22222222
|--aDevices[2]
|--|--iDevID : 0xc
|--|--iDevSN : 0x33333333
|--aDevices[3]
|--|--iDevID : 0xd
|--|--iDevSN : 0x44444444

或其他结构化数据 .. xml/python pickle/json strings/whatever

当然,我面对的头文件要复杂得多,数据中会有一个msgtype和一个msglenth字段,所以我可以找出哪个是正确的结构以及它有多长。

最佳答案

您有多需要它?

一个可能的解决方案可能是制作一个 GCC 插件或一个 MELT扩展(MELT 是一种扩展 GCC 的领域特定语言),但要做到这一点,您需要详细了解 GCC 的内部表示(特别是 Tree,也许还有 Gimple),这将花费您一些时间(几天,不是小时)。

如果您的声明更简单,或许可以考虑使用 SWIG (或者可能是 RPCXDR 解析器),但这假设您能够更改或简化它们。

关于c - 使用定义结构的 C 头文件解析数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com