Вы меняете число выше и возвращаете 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 получил серьезную ошибку в своем отладчике или моей всей машине ..
Потому что я заменил весь код более медленным избыточным кодом, но все еще получаю те же результаты
Кстати, если это имеет какое-то значение .. Я использую отладчик, чтобы сломать после функции, чтобы проверить результат