【问题标题】:Binary serialization of floating point numbers (restricted to IPC)浮点数的二进制序列化(仅限于 IPC)
【发布时间】:2015-07-20 12:03:15
【问题描述】:

我有两个进程在同一个设备上运行(不涉及虚拟机),通过二进制 IPC 协议进行通信。由于这保证了数字的表示对于发送者和接收者是相同的,我可以安全地假设以下序列化将适用于任何支持浮点数的设备吗?

void store_double(uint8_t *buf, double d)
{
    memcpy(buf, &d, sizeof(double));
}

double load_double(uint8_t const *buf)
{
    double d;
    memcpy(&d, buf, sizeof(double));
    return d;
}

double orig = 123.456;
uint8_t serialized[sizeof(double)];
store_double(serialized, orig);
// send serialized bytes to the receiver

// receive serialized bytes from the sender
double copy = load_double(serialized);

【问题讨论】:

标签: c++ c serialization floating-point ipc


【解决方案1】:

由于发送方和接收方是相同的架构,因此不存在字节序问题、浮点数、整数或其他问题。

如果架构不同,您可能会遇到问题。请参阅此post 或此post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2017-06-16
    • 2017-01-05
    相关资源
    最近更新 更多