Boost logo

Boost Users :

Subject: Re: [Boost-users] Convert big endian to little endian (floating point values)
From: Maarten de Vries (maarten_at_[hidden])
Date: 2015-12-08 16:48:17


On 8 December 2015 at 22:14, Martin Vymazal <martin.vymazal_at_[hidden]>
wrote:

>
> Hi,
>
> ok, here's the whole story. We have a code that computes some data,
> compresses them through zlib and saves as binary. We also use our own
> utility to postprocess the compressed file and convert it to human-readable
> format.
>
> What happened recently is that the code ran on a big-endian machine and
> since zlib preserves the endian-ess of the data, it generated a binary
> with big-endian doubles. We would like to have the possibility of bringing
> that file on a little-endian machine (say user's laptop) and postprocess
> there, instead of doing everything on the big-endian machine. Do you have
> an alternative suggestion how to approach this problem? Let's assume that
> writing the output data in any other format than the current one is not
> possible.
>
> I am also still interested in knowing whether boost (1.59) supports
> conversions between endian representations of floating-point values.

If you absolutely must, the easiest way to do this is to read the data as
if it's an unsigned integer type (of the correct size), convert endianness,
then reinterpret_cast (or something similarly horrible) to the floating
point type.

Of course, not relying on the platform specific bit representation of
primitive data types when serializing data is a much better idea.

-- Maarten



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net