Отправка байтового массива с использованием NSOutputStream

Мне нужно отправить 8-байтовый массив на IP. У меня есть данные как NSMutableArray. Содержит целочисленные значения от 0 до 255. И насколько мне известно, я должен преобразовать его в nsdata перед отправкой.

NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList dataTobeSent format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];

[outputStream write:[data bytes] maxLength:[data length]];

Я использую этот способ, но он дает мне объект NSdata с более чем 8 байтами

Любая помощь будет оценена


person Fadel Sabbagh    schedule 13.02.2015    source источник


Ответы (1)


Вы сделали неверное предположение о NSPropertyListSerialization, независимо от формата, который вы укажете, он создаст объект NSData, который можно преобразовать обратно в propertyListObject, так что у вас будет гораздо больше, чем просто необработанные данные.

Вы должны сделать что-то вроде

uint8_t dataArray[8]; // an 8 byte array
for (NSInteger i = 0; i < 8; i++) {
    dataArray[i] = (uint8_t) [dataTobeSent[0] integerValue];
}

[outputStream write:dataArray maxLength:8];

убедитесь, что ваш dataTobeSent действительно является массивом ровно с 8 значениями, иначе адаптируйте код

person Jerome Diaz    schedule 13.02.2015