Вы меняете число выше и возвращаете 1, когда оно BigEndian.

e Endian против Big Endian

Big Endian = 0x31014950
Little Endian = 0x50490131

Однако, используя этот метод

inline unsigned int endian_swap(unsigned int& x)  
{
return ( ( (x & 0x000000FF) << 24 ) | 
         ( (x & 0x0000FF00) << 8  ) |
         ( (x & 0x00FF0000) >> 8  ) |
         ( (x & 0xFF000000) >> 24 ) );
}

результат = 0x54110131
я потратил много времени, пробуя много похожих методов и даже библиотеку, такую ​​как

unsigned long _byteswap_ulong(unsigned long value);  

Но все равно не повезло .. все возвращает тот же результат

РЕДАКТИРОВАТЬ
Я работаю над системой Little-Endian с Microsoft Visual Studio 2008
пример как следует

int main()
{
    unsigned int y = 0x31014950;
    unsigned int r = endian_swap( y );
    std::cout << r;
}  

пример, размещенный на Ideone.com, верный, но он не работает со мной

РЕДАКТИРОВАТЬ

std::cout << std::hex << r;  

Либо Wals Pals .. Шестнадцатеричный или нет, он не получает правильный номер .. Либо Visual Studio получил серьезную ошибку в своем отладчике или моей всей машине ..
Потому что я заменил весь код более медленным избыточным кодом, но все еще получаю те же результаты
Кстати, если это имеет какое-то значение .. Я использую отладчик, чтобы сломать после функции, чтобы проверить результат

Ответы на вопрос(7)

Ваш ответ на вопрос