I have two processes running on the same device (no VMs involved), communicating over a binary IPC protocol. Since this guarantees that the the representation of the number is the same for the sender and the receiver, can I safely assume that the following serialization will work on any device that supports floating point numbers?
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);
bufis long enough, which is your case).doublevalues in IEEE double format: en.wikipedia.org/wiki/Double-precision_floating-point_format