diff --git a/src/array.c b/src/array.c index b3241e4..8484ecd 100644 --- a/src/array.c +++ b/src/array.c @@ -48,3 +48,44 @@ array_reverse_bits (unsigned char data[], unsigned int size) data[i] = j; } } + + +unsigned int +array_uint32_be (const unsigned char data[]) +{ + return (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]; +} + + +unsigned int +array_uint32_le (const unsigned char data[]) +{ + return data[0] + (data[1] << 8) + (data[2] << 16) + (data[3] << 24); +} + + +unsigned int +array_uint24_be (const unsigned char data[]) +{ + return (data[0] << 16) + (data[1] << 8) + data[2]; +} + + +unsigned int +array_uint24_le (const unsigned char data[]) +{ + return data[0] + (data[1] << 8) + (data[2] << 16); +} + +unsigned short +array_uint16_be (const unsigned char data[]) +{ + return (data[0] << 8) + data[1]; +} + + +unsigned short +array_uint16_le (const unsigned char data[]) +{ + return data[0] + (data[1] << 8); +} diff --git a/src/array.h b/src/array.h index 7580fb8..cc53dc2 100644 --- a/src/array.h +++ b/src/array.h @@ -32,6 +32,24 @@ array_reverse_bytes (unsigned char data[], unsigned int size); void array_reverse_bits (unsigned char data[], unsigned int size); +unsigned int +array_uint32_be (const unsigned char data[]); + +unsigned int +array_uint32_le (const unsigned char data[]); + +unsigned int +array_uint24_be (const unsigned char data[]); + +unsigned int +array_uint24_le (const unsigned char data[]); + +unsigned short +array_uint16_be (const unsigned char data[]); + +unsigned short +array_uint16_le (const unsigned char data[]); + #ifdef __cplusplus } #endif /* __cplusplus */