/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#define __MASK_BYTE_0 0xFFu
#define __MASK_BYTE_1 0xFF00u
#define __MASK_BYTE_2 0xFF0000ul
#define __MASK_BYTE_3 0xFF000000ul
#define __MASK_WORD_LOW 0xFFFFul
#define __MASK_WORD_HI 0x0000FFFFul
#define __SHIFT_BYTE_0 0u
#define __SHIFT_BYTE_1 8u
#define __SHIFT_BYTE_2 16u
#define __SHIFT_BYTE_3 24u
bool isCpuLittleEndian()
{
static const union {
uint32_t wordValue;
uint8_t byteValue[4];
} TEST = {0x12345678u};
return (TEST.byteValue[0] == 0x78u);
}
uint8_t WORD32_BYTE0( uint32_t word)
{
return (uint8_t)(word & __MASK_BYTE_0);
}
uint8_t WORD32_BYTE1( uint32_t word)
{
return (uint8_t)(((word & __MASK_BYTE_1) >> __SHIFT_BYTE_1));
}
uint8_t WORD32_BYTE2( uint32_t word)
{
return (uint8_t)(((word & __MASK_BYTE_2) >> __SHIFT_BYTE_2));
}
uint8_t WORD32_BYTE3( uint32_t word)
{
return (uint8_t)(((word & __MASK_BYTE_3) >> __SHIFT_BYTE_3));
}
int main()
{
uint32_t val = 0x11223344;
if(isCpuLittleEndian())
else
printf("%x\n", WORD32_BYTE0
(val
));
return 0;
}