Newer
Older
/*
* SPDX-FileCopyrightText: 2020 Bruce Cowan <bruce@bcowan.me.uk>
* SPDX-License-Identifier: Apache-2.0
*/
#include <inttypes.h>
#include <math.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#define DOUBLE_TO_BYTES(d) ((uint8_t *) &(d))
#define BYTES_TO_DOUBLE(b) (*((double *) (b)))
int
main (void)
{
double pi = M_PI;
uint8_t *bytes = DOUBLE_TO_BYTES (pi);
printf ("Bytes are [");
for (int i = 0; i < 7; i++)
printf ("%02" PRIx8 ", ", bytes[i]);
printf ("%02" PRIx8 "]\n", bytes[7]);
double d = BYTES_TO_DOUBLE (bytes);
printf ("Converting back, the value is %f\n", d);
return 0;
}