Thanks to you both.
On Tue, 16 Jun 2020, Even Rouault wrote:
On mardi 16 juin 2020 11:02:55 CEST Mateusz Loskot wrote:
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.
A rather compact and portable way:
double x;
std::memcpy(&x, ..., sizeof(double));
CPL_LSBPTR64(&x); // if the ordering in the file is little-endian
CPL_MSBPTR64(&x); // if the ordering in the file is big-endian
--
Spatialys - Geospatial professional services
http://www.spatialys.com
--
Andrew C. Aitchison Kendal, UK
[email protected]
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev