1
0
mirror of synced 2025-02-06 14:14:22 +01:00

fix: Numeric search tool not displaying values in correct endianess

This commit is contained in:
WerWolv 2023-11-25 19:40:29 +01:00
parent 47b6826ac4
commit af77b8dfc4

View File

@ -150,13 +150,15 @@ namespace hex::plugin::builtin {
} }
template<typename T> template<typename T>
static std::string formatBytes(const std::vector<u8> &bytes) { static std::string formatBytes(const std::vector<u8> &bytes, std::endian endian) {
if (bytes.size() > sizeof(T)) if (bytes.size() > sizeof(T))
return { }; return { };
T value = 0x00; T value = 0x00;
std::memcpy(&value, bytes.data(), bytes.size()); std::memcpy(&value, bytes.data(), bytes.size());
value = hex::changeEndianess(value, bytes.size(), endian);
if (std::signed_integral<T>) if (std::signed_integral<T>)
value = hex::signExtend(bytes.size() * 8, value); value = hex::signExtend(bytes.size() * 8, value);
@ -507,16 +509,16 @@ namespace hex::plugin::builtin {
result += hex::encodeByteString({ bytes[i] }); result += hex::encodeByteString({ bytes[i] });
break; break;
case Unsigned: case Unsigned:
result += formatBytes<u64>(bytes); result += formatBytes<u64>(bytes, occurrence.endian);
break; break;
case Signed: case Signed:
result += formatBytes<i64>(bytes); result += formatBytes<i64>(bytes, occurrence.endian);
break; break;
case Float: case Float:
result += formatBytes<float>(bytes); result += formatBytes<float>(bytes, occurrence.endian);
break; break;
case Double: case Double:
result += formatBytes<double>(bytes); result += formatBytes<double>(bytes, occurrence.endian);
break; break;
} }
} }