Lo que te pase no debería de comerse ningún numero, si lo dices por la salida por pantalla, es el printf el que no los muestra
Con esta modificacion muestra tambien los 0 de arriba, pero que no los mostrara no significa que no los invierta. Ese trozo lo puse para que vieras el resultado
Este code esta filtrando en grupos de 2bytes (16bits)
Código (cpp) [Seleccionar]
printf("Numero %08X Invertido %08X\n",Numero,Invertido);
Con esta modificacion muestra tambien los 0 de arriba, pero que no los mostrara no significa que no los invierta. Ese trozo lo puse para que vieras el resultado
Este code esta filtrando en grupos de 2bytes (16bits)
Código (cpp) [Seleccionar]
if ( addr & 0x2 ) data = (data>>16)&0xffff ;
else data = (data&0x0000ffff) ;