2012-01-20 23 views
24

私はオリジナルのNSData型を持っています。これは100バイトと言います。私は他の2種類のNSDataを手に入れたいです。最初のものは100の最初の20バイトを含み、2番目のものは他の80を含みます。 これらは元のNSDataからコピーする必要があります。申し訳ありませんが私は非常に明確ではなかったが、私はObjective-Cでかなり新しいです。NSDataのバイト配列の一部を別のNSData型にコピー

+0

NSData'の ' - (NSData *)subdataWithRange:(NSRange)range;' –

答えて

57

NSData-(NSData *)subdataWithRange:(NSRange)range;を使用してください。

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

は、範囲がここですぐに、あなたはおそらく、計算を行う必要があります、それはあなたの実際のコードを動作させるために、次のとおりです。あなたの例から
は、ここにいくつかのコードです。

+0

ありがとうございましたVince、あなたは私にとってとても便利です! – Mateo

2
NSData *mainData = /*This is you actual Data*/ 

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

代わりに80あなたには、いくつかのダイナミックを使用することができます - データレンスのようなこのため

+1

なぜ20-79になるのでしょうか?本気ですか? –

+1

@AlBeebe心配しないで...同じことを2回以上やってきたと確信しています。あなたが気づいたという事実は、とにかく古くなったコメントを整理する時だということです。乾杯。 – Caleb

2

スウィフト3

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

を質問され、私はここに書きたいGoogle検索の最上部にあります例:swift