gpt4 book ai didi

c++ - 如何为套接字编程序列化 8 位整数结构?

转载 作者:行者123 更新时间:2023-11-28 00:18:17 25 4
gpt4 key购买 nike

我有一个包含 5 个无符号 8 位整数的结构,它模拟一个包含 5 个数据包的帧。经过研究,我知道需要逐字段序列化数据,特别是因为我要从 Windows 机器发送到 Linux 机器并返回。

这是我的结构:

typedef struct pressure{
UINT8 a;
UINT8 b;
UINT8 c;
UINT8 d;
UINT8 e;
}pressure;

问题是我不能使用 htons(),因为我的成员必须是 8 位。我如何手动序列化这个?如果您能提供一个简短的代码示例来说明如何序列化以及将什么传递给 send(),我们将不胜感激。

最佳答案

您可以使用 ostream::put 写入每个单独的字节,或者 - 如果您确保它们在 pressure 的内存中是连续的(这将在没有您的情况下我使用过的每个编译器上完成积极地做任何事)- 使用 ostream::write 写很多,如:

my_ostream.write(static_cast<const char*>(&my_pressure.a), 5);

也就是说,考虑将值保存在一个数组中,以确保它们在内存中是连续的。

您不需要 htonX/ntohX 等 - 它们用于规范化/非规范化 多字节 整数表示,您这里没有。

关于c++ - 如何为套接字编程序列化 8 位整数结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868918/

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