implement software endianness byte-swapping
This commit is contained in:
parent
4753e013aa
commit
30f3fd04df
1 changed files with 28 additions and 0 deletions
28
endian.c
28
endian.c
|
|
@ -21,7 +21,35 @@ static enum cu_endian_e endian_detect()
|
|||
else return MiddleEndian;
|
||||
}
|
||||
|
||||
static uint16_t sw_bswap16(uint16_t val)
|
||||
{
|
||||
return (val << 8) | (val >> 8);
|
||||
}
|
||||
|
||||
static uint32_t sw_bswap32(uint32_t val)
|
||||
{
|
||||
return ((val >> 24) & 0xFF) << 0
|
||||
| ((val >> 16) & 0xFF) << 8
|
||||
| ((val >> 8) & 0xFF) << 16
|
||||
| ((val >> 0) & 0xFF) << 24;
|
||||
}
|
||||
|
||||
static uint64_t sw_bswap64(uint64_t val)
|
||||
{
|
||||
return ((val >> 56) & 0xFF) << 0
|
||||
| ((val >> 48) & 0xFF) << 8
|
||||
| ((val >> 40) & 0xFF) << 16
|
||||
| ((val >> 32) & 0xFF) << 24
|
||||
| ((val >> 24) & 0xFF) << 32
|
||||
| ((val >> 16) & 0xFF) << 40
|
||||
| ((val >> 8) & 0xFF) << 48
|
||||
| ((val >> 0) & 0xFF) << 56;
|
||||
}
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void cu_endian_init()
|
||||
{
|
||||
cu_endian = endian_detect();
|
||||
printf("%lx\t%lx\n", 0x12345678abcd8765, sw_bswap64(0x12345678abcd8765));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue