[gdal-dev] Reading a double from file

Mateusz Loskot mateusz at loskot.net
Tue Jun 16 02:02:55 PDT 2020


On Tue, 16 Jun 2020 at 10:08, Andrew C Aitchison <andrew at aitchison.me.uk> 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


More information about the gdal-dev mailing list