diff options
Diffstat (limited to 'utils/gen_adldata/file_formats')
-rw-r--r-- | utils/gen_adldata/file_formats/common.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/utils/gen_adldata/file_formats/common.h b/utils/gen_adldata/file_formats/common.h index f441221..a03ca5d 100644 --- a/utils/gen_adldata/file_formats/common.h +++ b/utils/gen_adldata/file_formats/common.h @@ -18,6 +18,14 @@ inline int16_t toSint16BE(const uint8_t *arr) return num; } +inline int16_t toSint16LE(const uint8_t *arr) +{ + int16_t num = *reinterpret_cast<const int8_t *>(&arr[1]); + num *= 1 << 8; + num |= static_cast<int16_t>(arr[0]) & 0x00FF; + return num; +} + inline uint16_t toUint16LE(const uint8_t *arr) { uint16_t num = arr[0]; @@ -34,4 +42,14 @@ inline uint32_t toUint32LE(const uint8_t *arr) return num; } +inline int32_t toSint32LE(const uint8_t *arr) +{ + int32_t num = *reinterpret_cast<const int8_t *>(&arr[3]); + num *= 1 << 24; + num |= (static_cast<int32_t>(arr[2]) << 16) & 0x00FF0000; + num |= (static_cast<int32_t>(arr[1]) << 8) & 0x0000FF00; + num |= static_cast<int32_t>(arr[0]) & 0x000000FF; + return num; +} + #endif // COMMON_H |