2009-04-04 15 views
11

Cómo anexar un NSInteger a NSMutableData. Algo allong las líneas de ...Añadir NSInteger a NSMutableData

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

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

Para que 0x0000002A obtendrá anexa a myData.

Cualquier ayuda apreciada.

Respuesta

22

Pase la dirección del número entero, no el número entero en sí. appendBytes:length: espera un puntero a un búfer de datos y el tamaño del búfer de datos. En este caso, el "buffer de datos" es el número entero.

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

Tenga en cuenta, sin embargo, que esto utilizará el endianness de su computadora para codificarlo. Si planea escribir los datos en un archivo o enviarlos a través de la red, debe usar una endiancia conocida. Por ejemplo, para convertir desde el host (el equipo) a la red endianness, utilice htonl():

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

Gracias por la punta en ntohl(), que se envía a través de la red :) – holz

+0

Gracias mucho este me ayude – akin