gpt4 book ai didi

c++ - 序列化枚举的正确且可移植的方法

转载 作者:太空狗 更新时间:2023-10-29 23:18:45 26 4
gpt4 key购买 nike

<分区>

我需要序列化要通过网络发送的枚举值。发送部分用 C 语言编写,在 8 位微 Controller 上运行,没有可用的 Protocol Buffers 或类似库。接收部分使用 C++ (Linux)。我尝试了以下方法:

enum enum_x {
V1 = 1,
V2 = 2,
};

enum enum_y {
V3 = 1,
V4 = 2,
V5 = 3,
};

enum enum_z {
V6 = 1,
V7 = 2,
V8 = 3,
};

uint8_t serialize_enums(enum_x x, enum_y y, enum_z z) {
return x * 100 + y * 10 + z;
}

但是好像不成立。它在我的 Linux 机器上工作正常,但在 8 位系统上结果不正确(y 值似乎存储为 z 而 z 值丢失)。我尝试添加类型转换:

return (uint8_t)x * 100 + (uint8_t)y * 10 + (uint8_t)z;

但这并没有帮助。什么是正确的做法?

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