Added byte order conversion functions (little and big endian).

This commit is contained in:
Jef Driesen 2009-03-11 10:18:05 +00:00
parent 1668e70c79
commit 99c3d258d4
2 changed files with 59 additions and 0 deletions

View File

@ -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);
}

View File

@ -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 */