Something generic:
Code:
void* to_le( void* buf, size_t len )
{
typedef unsigned char byte;
typedef byte* pbyte;
static size_t const val = 1, res = *( ( pbyte )&val ) == 0;
pbyte ptr = ( pbyte )buf, end = ( ptr + len ) - 1;
if( res )
{
for( ; ptr < end; ++ptr, --end )
{
*ptr ^= *end;
*end = *ptr ^ *end;
*ptr ^= *end;
}
}
return buf;
}
void* to_le16( void* buf )
{
return to_le( buf, 2 );
}
void* to_le32( void* buf )
{
return to_le( buf, 4 );
}
void* to_le64( void* buf )
{
return to_le( buf, 8 );
}
Warning: untested code. =}