Même résultat pour htonl() et ntohl() sur un entier

J'ai couru le programme suivant sur little-endian [LE] machine [Linux, processeur Intel]. Je suis incapable d'expliquer le 3 sorties dans l'extrait de code ci-dessous. Depuis que la machine est à CHIER, la valeur de a est stockée en tant que 0x78563412. Lors de l'impression, c'est l'affichage de sa valeur réelle. Depuis sa une LE machine, j'attends ntohl() d'être un no-op et d'affichage 0x78563412, qu'il est en train de faire. Toutefois, je m'attends à 0x12345678 pour la 2ème instruction d'impression contenant htonl(). Quelqu'un peut-il m'aider à comprendre pourquoi ils sont même?

int main() 
{
    int a = 0x12345678; 

    printf("Original - 0x%x\n", (a)); 
    printf("Network - 0x%x\n", htonl(a)); 
    printf("Host - 0x%x\n", ntohl(a)); 

    return 0;
}

De sortie:

Original - 0x12345678
Network - 0x78563412
Host - 0x78563412

OriginalL'auteur Bhaskar | 2012-07-10