浮动点号的二进制序列化(仅限于IPC)

Binary serialization of floating point numbers (restricted to IPC)

本文关键字:IPC 序列化 二进制      更新时间:2023-10-16

我有两个在相同设备上运行的过程(不涉及VM),通过二进制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);

由于发件人和接收器是相同的体系结构,没有Endian问题,浮点,整数或其他。

如果架构不同,您可能会有问题。请参阅此帖子或此帖子。