Stocker les bytes d'un NSData dans un NSUInteger

highthemhighthem Membre
07:54 modifié dans API AppKit #1
Bonjour,

J'essaye de stocker certains bytes contenus dans un NSData, dans un NSUInteger.
Voici le code que j'ai (receivedPacket est un NSData contenant des valeurs en hexa):

<br />NSUInteger value;<br />[receivedPacket getBytes: &amp;value range:NSMakeRange(8, 4)];<br />NSLog(@&quot;value : %x&quot;,value);<br />


Mon problème est le suivant :
Lors de l'affichage du contenu de value, j'obtiens bien ce qui est contenu dans receivedPacket mais les octets sont inversés.
C'est à  dire que pour un contenu de receivedPacket valant : 0x3F 0x24 0x00 0x01, je vais avoir 0x01 0x00 0x24 0x3F lors de l'affichage de value.

D'où vient cet inversement ?
Merci.

Réponses

  • MalaMala Membre, Modérateur
    07:54 modifié #2
    A première vue, je dirais que c'est une classique inversion d'octets entre l'émetteur de la trame et le récepteur qui l'interprète. Plus d'infos ici...
    http://fr.wikipedia.org/wiki/Endianness
  • highthemhighthem Membre
    07:54 modifié #3
    Ah d'accord.
    Et existe-t-il un moyen de contourner ce problème ?
  • CéroceCéroce Membre, Modérateur
    juillet 2011 modifié #4
    Utilise la fonction NSSwapBigLongToHost() de Foundation et ses copines.
    Host représente le processeur où s'exécute l'appli (petit-boutien sur un proc Intel).
    (Habituellement, les communications se font en gros-boutien).
Connectez-vous ou Inscrivez-vous pour répondre.