|
|
|
@ -196,6 +196,9 @@ bool Image::isLittleEndianPlatform() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint64_t Image::byteSwap(uint64_t value, bool bSwap) {
|
|
|
|
|
#ifdef __cpp_lib_byteswap
|
|
|
|
|
return bSwap ? std::byteswap(value) : value;
|
|
|
|
|
#else
|
|
|
|
|
uint64_t result = 0;
|
|
|
|
|
auto source_value = reinterpret_cast<byte*>(&value);
|
|
|
|
|
auto destination_value = reinterpret_cast<byte*>(&result);
|
|
|
|
@ -204,22 +207,31 @@ uint64_t Image::byteSwap(uint64_t value, bool bSwap) {
|
|
|
|
|
destination_value[i] = source_value[8 - i - 1];
|
|
|
|
|
|
|
|
|
|
return bSwap ? result : value;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32_t Image::byteSwap(uint32_t value, bool bSwap) {
|
|
|
|
|
#ifdef __cpp_lib_byteswap
|
|
|
|
|
return bSwap ? std::byteswap(value) : value;
|
|
|
|
|
#else
|
|
|
|
|
uint32_t result = 0;
|
|
|
|
|
result |= (value & 0x000000FFU) << 24;
|
|
|
|
|
result |= (value & 0x0000FF00U) << 8;
|
|
|
|
|
result |= (value & 0x00FF0000U) >> 8;
|
|
|
|
|
result |= (value & 0xFF000000U) >> 24;
|
|
|
|
|
return bSwap ? result : value;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint16_t Image::byteSwap(uint16_t value, bool bSwap) {
|
|
|
|
|
#ifdef __cpp_lib_byteswap
|
|
|
|
|
return bSwap ? std::byteswap(value) : value;
|
|
|
|
|
#else
|
|
|
|
|
uint16_t result = 0;
|
|
|
|
|
result |= (value & 0x00FFU) << 8;
|
|
|
|
|
result |= (value & 0xFF00U) >> 8;
|
|
|
|
|
return bSwap ? result : value;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint16_t Image::byteSwap2(const DataBuf& buf, size_t offset, bool bSwap) {
|
|
|
|
|