2009-04-04 8 views
11

Comment ajouter un NSInteger à NSMutableData. Quelque chose allong les lignes de ...Ajout de NSInteger à NSMutableData

NSMutableData *myData = [[NSMutableData alloc] init]; 
NSInteger myInteger = 42; 

[myData appendBytes:myInteger length:sizeof(myInteger)]; 

Alors que 0x0000002A va obtenir ajouté à myData.

Toute aide appréciée. Passez l'adresse de l'entier, pas l'entier lui-même.

Répondre

22

appendBytes:length: attend un pointeur vers un tampon de données et la taille du tampon de données. Dans ce cas, le "tampon de données" est l'entier. Gardez à l'esprit, cependant, que cela va utiliser l'endianness de votre ordinateur pour l'encoder. Si vous envisagez d'écrire les données dans un fichier ou de les envoyer sur le réseau, vous devez utiliser une endianness connue à la place. Par exemple, pour convertir l'hôte (votre machine) au réseau boutisme, utilisez htonl():

uint32_t theInt = htonl((uint32_t)myInteger); 
[myData appendBytes:&theInt length:sizeof(theInt)]; 
+0

Merci pour l'astuce sur ntohl(), il est envoyé à travers le réseau :) – holz

+0

Merci beaucoup cela me aide – akin

Questions connexes