потому для чего этот формат придумали
к примеру
Код
logn int BigData = 128.
void *p = (void *)&BigData;
это все сработает правильно
Код
char ch_data = *p;
short int m_data = *p;
int mm_data = *p;
long int l_data = *p;
потому что в адресах памяти самый младший байт лежим первым, и взяв его в чаровский указатель вы получите верное 8 битное число.
Запихав в 16 бит, вы опять же получите верное 16 битное число и так далее...
То есть такой формат позволяет легко преобразовывать длинный тип в короткие, и обратно при некоторой сноровке
Код
short int Data = 232443;
void *p = (void *)&Data;
long int b_data = *p;
b_data &= 0x0000FFFF;
в формате Big Endian младшая часть числа всегда лежит на разном расстоянии от начала в зависимости от размерности числа, и чтобы получить правильное число из памяти надо знать и учитывать размерность числа записанного и приемника, это несколько осложняет процесс....