Отправка байтового массива с использованием 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 байтов
Любая помощь будет оценена
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 значениями, иначе адаптируйте код