使用substringFromIndex:与NSData

时间:2011-08-23 06:22:59

标签: objective-c ios cocoa-touch nsdata

我正在处理一个4840字节的NSData对象,并希望省略前20个字节并获取其余字节。子串方法substringFromIndex: / substringToIndex:是否适用于NSData

3 个答案:

答案 0 :(得分:5)

即将结束,NSData有一个方法subdataWithRange:。您可以使用函数NSMakeRange创建范围,然后根据需要使用该范围生成NSData剪裁。

一个例子:

// Create NSData
NSString* myString = @"Lorem ipsum dolor sit amet, consectetur cras amet.";
NSData*   myData   = [myString dataUsingEncoding:NSUTF8StringEncoding];
if (myData != nil && myData.length > 20) {

  // Create trimmed NSData
  NSData* newData = [myData subdataWithRange:NSMakeRange(20, myData.length - 20)];
  if (newData != nil) {

    // Test
    NSString* newString = [[NSString alloc] initWithData: newData 
                                                encoding: NSUTF8StringEncoding];
    NSLog(@"%@", newString);
    // -> "t amet, consectetur cras amet."
  }
}

答案 1 :(得分:3)

阅读NSData的文档,有一个方法可以让你指定一个字节范围:-getBytes:range:。使用NSMakeRange()设置范围。

答案 2 :(得分:2)

- (NSData *)subdataWithRange:(NSRange)range;