Comment voulez-vous convertir un int en un octet en Objective-C?
J'ai un int valeur qui doit être converti en un tableau d'octets.
Comment allez-vous faire cela en Objective-C? Existe-il des méthodes pour ce faire?
Merci,
Double Possible: Stackoverflow - Stocker un int en char array?. À tout le moins, il peut vous arriver à
char[]
.OriginalL'auteur suse | 2010-04-22
Vous devez vous connecter pour publier un commentaire.
Converti dans quel sens? Voulez-vous qu'il en little endian, big endian ou natifs d'ordre des octets? Si vous voulez en natif d'ordre des octets, alors tout ce que vous devez faire est de:
Cela dit, la meilleure façon de manipuler les octets d'un entier est de faire des opérations bit à bit. Par exemple, pour obtenir la plus faible octet de poids, vous pouvez utiliser le val&0xFF, pour obtenir le prochain vous utilisez
(val>>8)&0xFF
, puis(val>>16)&0xFF
, puis(val>>24)&0xFF
, etc.Bien sûr, cela dépend de la taille de votre type de données. Si vous faites ces choses, vous devrait vraiment inclure
<
inttypes.h
>
;, et l'utilisationuint8_t
,uint16_t
,uint32_t
, ouuint64_t
, en fonction de la taille d'un entier que vous voulez; sinon, vous ne pouvez pas fiable jouer avec un plus grand nombre d'octets.sizeof()
?OriginalL'auteur Michael Aaron Safyan
Je soupçonne que ce que vous voulez faire est de passer ce tableau d'octets quelque part éventuellement à un NSMutableData objet. Vous venez de passer l'adresse &val
Exemple:
Ce lien est le plus complet et traite de l'endianness:
Ajouter NSInteger à NSMutableData
OriginalL'auteur David Waring