浮动点号的二进制序列化(仅限于IPC)
Binary serialization of floating point numbers (restricted to IPC)
我有两个在相同设备上运行的过程(不涉及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问题,浮点,整数或其他。
如果架构不同,您可能会有问题。请参阅此帖子或此帖子。
相关文章:
- 如何在C++中序列化结构数据
- 序列化,没有库的整数,得到奇怪的结果
- 如何知道QDataStream不能反序列化某些内容
- 如何使用Python从C++中读取谷物序列化数据
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 自定义对象的dlib序列化在gcc中失败
- C++boost序列化多态性问题
- 增强基于 XML class_id的反序列化
- 提升反序列化对象具有 nan 或 -nan 值
- 在 cpp 中的平面缓冲区中序列化对象
- 每次进行继承时都需要提升::序列化::base_object吗?
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 提升序列化 1:73 的向后兼容性问题
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- 为什么 nlohmann/json 序列化 "null" 而不是在 double 上"0"?
- 如何反序列化数组?
- 如何使用提升序列化?
- 序列化多晶型接口
- 浮动点号的二进制序列化(仅限于IPC)