diff options
author | Ulrich Bauer <mail@ulrich-bauer.org> | 2019-11-24 18:02:40 +0100 |
---|---|---|
committer | Ulrich Bauer <mail@ulrich-bauer.org> | 2019-11-24 18:02:40 +0100 |
commit | 6a97e6c9e78a226abf4342d9b72bf1cc0235d775 (patch) | |
tree | 98d9036ec4d5ad7e150bd88bac718df59ec8455c | |
parent | 3e375a78a75c66da5ca40c2c3758a29adb0d0216 (diff) |
endian conversion for binary read
-rw-r--r-- | ripser.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -830,10 +830,15 @@ enum file_format { BINARY }; +static const uint16_t endian_check(0xff00); +static const bool is_big_endian = *reinterpret_cast<const uint8_t*>(&endian_check); + template <typename T> T read(std::istream& input_stream) { T result; - input_stream.read(reinterpret_cast<char*>(&result), sizeof(T)); - return result; // on little endian: boost::endian::little_to_native(result); + char* p = reinterpret_cast<char*>(&result); + input_stream.read(p, sizeof(T)); + if (is_big_endian) std::reverse(p, p + sizeof(T)); + return result; } compressed_lower_distance_matrix read_point_cloud(std::istream& input_stream) { |