Добавить NSInteger к NSMutableData - PullRequest
       23

Добавить NSInteger к NSMutableData

12 голосов
/ 04 апреля 2009

Как добавить NSInteger в NSMutableData. Что-то по линии ...

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

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

Так что 0x0000002A будет добавлено к myData.

Любая помощь приветствуется.

1 Ответ

23 голосов
/ 04 апреля 2009

Передайте адрес целого числа, а не само целое число. appendBytes:length: ожидает указатель на буфер данных и размер буфера данных. В этом случае «буфер данных» является целым числом.

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

Имейте в виду, однако, что это будет использовать порядковый номер вашего компьютера для его кодирования. Если вы планируете записать данные в файл или отправить их по сети, вы должны использовать вместо этого известный порядок байтов. Например, чтобы преобразовать хост (ваш компьютер) в сетевую последовательность, используйте htonl():

uint32_t theInt = htonl((uint32_t)myInteger);
[myData appendBytes:&theInt length:sizeof(theInt)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...