Скопируйте часть байтового массива NSData в другой тип NSData - PullRequest
26 голосов
/ 20 января 2012

У меня есть оригинальный тип NSData, который содержит, скажем, 100 байтов. Я хочу получить 2 других NSData типа. Первый содержит первые 20 байтов из 100, а второй содержит остальные 80. Они должны быть скопированы с оригинала NSData. Извините, если я не был так ясен, но я довольно новичок в Objective-C.

Ответы [ 3 ]

60 голосов
/ 20 января 2012

Вы можете использовать NSData -(NSData *)subdataWithRange:(NSRange)range;, чтобы сделать это.
Из вашего примера, вот некоторый код:

// original data in myData
NSData *d1 = [myData subdataWithRange:NSMakeRange(0, 20)];
NSData *d2 = [myData subdataWithRange:NSMakeRange(20, 80)];

Конечно, диапазоны здесь непосредственные,вероятно, придется делать расчеты, чтобы он работал для вашего реального кода.

3 голосов
/ 19 декабря 2016

Swift 3

let subdata1 = data?.subdata(in: 0..<20)
let subdata2 = data?.subdata(in: 20..<80)

В связи с этим вопрос находится в самом верху поиска Google. Я хочу написать здесь пример для swift

3 голосов
/ 20 января 2012
 NSData *mainData = /*This is you actual Data*/

 NSData *fPart = [mainData subdataWithRange:NSMakeRange(0, 20)];
 NSData *sPart = [mainData subdataWithRange:NSMakeRange(20, 80)];

Вместо 80 вы можете использовать некоторую динамическую - например, длину данных

...