#include <stdio.h>
#include <stdint.h>
enum ETYPE {
LE,
BE,
INVALID
};
enum ETYPE find_endianness(void) {
// uint8_t a[4] = {0x10, 0x20, 0x30, 0x40};
// uint16_t *ptr = a[0];
uint32_t val = 0x10203040;
uint8_t *ptr = (uint8_t *)&val;
if (*ptr == 0x40) {
return LE;
}
else {
return BE;
}
return INVALID;
}
int main()
{
if (find_endianness() == LE) {
printf("Endianness is little endian\n"); }
else {
printf("Endianness is big endian\n"); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCmVudW0gRVRZUEUgewogICAgTEUsCiAgICBCRSwKICAgIElOVkFMSUQKfTsKCmVudW0gRVRZUEUgZmluZF9lbmRpYW5uZXNzKHZvaWQpIHsKICAgLy8gdWludDhfdCBhWzRdID0gezB4MTAsIDB4MjAsIDB4MzAsIDB4NDB9OwogICAvLyB1aW50MTZfdCAqcHRyID0gYVswXTsKCiAgICB1aW50MzJfdCB2YWwgPSAweDEwMjAzMDQwOwogICAgdWludDhfdCAqcHRyID0gKHVpbnQ4X3QgKikmdmFsOwogICAgaWYgKCpwdHIgPT0gMHg0MCkgewogICAgICAgIHJldHVybiBMRTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiBCRTsKICAgIH0KICAgIHJldHVybiBJTlZBTElEOwp9CgppbnQgbWFpbigpCnsKICAgIGlmIChmaW5kX2VuZGlhbm5lc3MoKSA9PSBMRSkgewogICAgICAgIHByaW50ZigiRW5kaWFubmVzcyBpcyBsaXR0bGUgZW5kaWFuXG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHByaW50ZigiRW5kaWFubmVzcyBpcyBiaWcgZW5kaWFuXG4iKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==