2009-04-04 4 views
11

NSMutableData ürününe nasıl NSInteger eklersiniz. hatları allong şey ... NSInteger öğesinin NSMutableData'ya ekle

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

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

Böylece 0x0000002A MyData eklenen alacak.

Herhangi bir yardım için teşekkür ederiz.

cevap

22

Tam sayıyı değil, tamsayı adresini iletin. appendBytes:length:, bir veri arabelleğine ve veri arabelleğinin boyutuna işaret eder. Bu durumda, "veri tamponu" tamsayıdır.

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

Bununla birlikte, bunun şifrelenmesi için bilgisayarınızın endianitesini kullanacağını unutmayın. Verileri bir dosyaya yazmayı veya ağ üzerinden göndermeyi planlıyorsanız, bunun yerine bilinen bir endianness kullanmalısınız. Örneğin, endianness'ın ağ konak (makineniz) dönüştürmek için, htonl() kullanın:

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

Teşekkür ntohl(), bu ağa :) genelinde gönderiliyor üzerinde ucu için – holz

+0

teşekkürler bu bana yardımcı çok – akin