salut, comment cela est possible que les deux traces m'affichent la même valeur 8O
???Code:
1
2
3
4 ulPtr=ptRequest->pcDescrUrl; DTRACE(XZC_N2,"ulPtr",*ulPtr) ulType=ntohl(*ulPtr); DTRACE(XZC_N2,"valeur ulType",ulType)
Version imprimable
salut, comment cela est possible que les deux traces m'affichent la même valeur 8O
???Code:
1
2
3
4 ulPtr=ptRequest->pcDescrUrl; DTRACE(XZC_N2,"ulPtr",*ulPtr) ulType=ntohl(*ulPtr); DTRACE(XZC_N2,"valeur ulType",ulType)
Tu compiles sur quoi??
Sur un PC, ce n'est pas normal (à moins que le nombre soit un palindrome binaire: Tu devrais essayer de l'afficher en Hexa)
Sur une autre machine, ça peut être normal: Si la machine est en BigEndian, la fonction ntohl() est sans effet, car le format des données est le même sur le réseau et sur l'hôte...
Si t'es sur une architecture Big Endian c'est normal ;), t'es déjà en Big Endian (PPC?) et donc la conversion ne fait rien !
Le but du jeu de cette fonction est justement de ne rien faire si t'as déjà les bonnes valeurs, et de convetir sinon.
je suis sur IBM AIX 5.2, BigEndian ou pas?
Je pense que oui.
Test simple:
Code:
1
2
3
4
5
6 #include <stdio.h> int main(void){ int i=0x1234; printf("%s\n", ( (*(char*)&i)==0x34)?"LittleEndian":"BigEndian"); return 0; }