Revert "Fix endian issue in integer hex string conversion"

This commit is contained in:
Vladimir C 2022-11-24 12:22:22 +01:00 committed by GitHub
parent b784128c88
commit a2e1269ef2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,6 @@
#pragma once
#include <string>
#include <Core/Types.h>
/// Maps 0..15 to 0..9A..F or 0..9a..f correspondingly.
@ -50,32 +50,17 @@ inline void writeBinByte(UInt8 byte, void * out)
template <typename TUInt>
inline void writeHexUIntImpl(TUInt uint_, char * out, const char * const table)
{
if constexpr (is_integer<TUInt>)
union
{
/// For integer types, use endian indepentant way for conversion
TUInt value = uint_;
TUInt value;
UInt8 uint8[sizeof(TUInt)];
};
for (size_t i = 0; i < sizeof(TUInt); ++i)
{
memcpy(out + (sizeof(TUInt) - 1 - i) * 2, &table[static_cast<size_t>(value % 256) * 2], 2);
value /= 256;
}
}
else
{
/// For non-integer types, access memory directly for conversion to keep back-compatibility
union
{
TUInt value;
UInt8 uint8[sizeof(TUInt)];
};
value = uint_;
value = uint_;
/// Use little endian
for (size_t i = 0; i < sizeof(TUInt); ++i)
memcpy(out + i * 2, &table[static_cast<size_t>(uint8[sizeof(TUInt) - 1 - i]) * 2], 2);
}
/// Use little endian
for (size_t i = 0; i < sizeof(TUInt); ++i)
memcpy(out + i * 2, &table[static_cast<size_t>(uint8[sizeof(TUInt) - 1 - i]) * 2], 2);
}
template <typename TUInt>