web-dev-qa-db-ja.com

NSDataバイト配列の一部を別のNSDataタイプにコピーします

元のNSDataタイプに、たとえば100バイトが含まれています。他に2つのNSDataタイプを取得したい。最初のものは100の最初の20バイトを含み、2番目のものは他の80バイトを含んでいます。それらは元のNSDataからコピーする必要があります。よくわからなかったら申し訳ありませんが、Objective-Cはかなり新しいです。

26
Claudio Ferraro

これを行うには、NSData-(NSData *)subdataWithRange:(NSRange)range;を使用できます。
あなたの例から、ここにいくつかのコードがあります:

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

もちろん、範囲はすぐここにあります。実際のコードで機能させるには、おそらく計算を行う必要があります。

60
user971401

Swift

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

このため、質問はGoogle検索の一番上にあります。ここでSwiftの例を書きます

3
Vyacheslav
 NSData *mainData = /*This is you actual Data*/

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

代わりに80を使用すると、データ長などの動的な値を使用できます

3
Sanjeev Rao