On Tue, 16 Jun 2020 at 10:08, Andrew C Aitchison <[email protected]> wrote: > > Does gdal have a standard, endian-independent, > way to read floating point values from file ? > Specifically IEEE-754 little-endian 64bit values. > > So far my driver has used a union to "cast" 8 bytes to a double, > but I now discover that, whilst this is valid C, it is not valid C++. > I am looking for a portable way to read such values from file > into a C++ double. This cannot be the first gdal driver to need to do this.
Generally, use std::memcpy or std::copy. Detect if you need to swap bytes and swap bytes. Specifically, among others: https://github.com/OSGeo/gdal/blob/master/gdal/frmts/blx/blx.c#L486-L502 BTW, for reading float-point values from text, CPLAtof, CPLScanString, etc: https://github.com/OSGeo/gdal/blob/master/gdal/port/cpl_conv.h#L83-L119 -- Mateusz Loskot, http://mateusz.loskot.net _______________________________________________ gdal-dev mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/gdal-dev
