Little Endian - Problema de Big Endian
Little Endian vs Big Endian
Big Endian = 0x31014950
Little Endian = 0x50490131
Sin embargo, utilizando este método
inline unsigned int endian_swap(unsigned int& x)
{
return ( ( (x & 0x000000FF) << 24 ) |
( (x & 0x0000FF00) << 8 ) |
( (x & 0x00FF0000) >> 8 ) |
( (x & 0xFF000000) >> 24 ) );
}
resultado = 0x54110131
Pasé mucho tiempo probando muchos métodos similares e incluso una biblioteca como
unsigned long _byteswap_ulong(unsigned long value);
Pero aun así no hubo suerte ... todo devuelve el mismo resultado
EDITAR
Estoy trabajando en el sistema Little-Endian con Microsoft Visual Studio 2008
el ejemplo como sigue
int main()
{
unsigned int y = 0x31014950;
unsigned int r = endian_swap( y );
std::cout << r;
}
el ejemplo publicado en Ideone.com es correcto ... pero no funciona conmigo
EDITAR
std::cout << std::hex << r;
De cualquier manera, Pals ... Hex o no, no está obteniendo el número correcto ... O Visual Studio tiene un error grave en su depurador o en toda mi máquina ...
Porque reemplacé todo el código con un código Redunant más lento pero aún obteniendo los mismos resultados
Por cierto, si hace alguna diferencia ... estoy usando Debugger para romper después de la función para verificar el resultado