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)];
Gracias por la punta en ntohl(), que se envía a través de la red :) – holz
Gracias mucho este me ayude – akin