cocoa - 如何检查 NSData 对象是否包含子 NSData?

标签 cocoa nsdata

我有一个 NSData 对象,其中包含我需要的一些数据。我想做的是找出数据“FF D8”的位置(JPEG数据的开始)

我怎样才能完成这样的工作?

最佳答案

先获取范围,然后获取数据:

// The magic start data object is only created once safely and 
// then reused each time
static NSData* magicStartData = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
  static const uint8_t magic[] = { 0xff, 0xd8 };
  magicStartData = [NSData dataWithBytesNoCopy:(void*)magic length:2 freeWhenDone:NO];
});

// assume data is the NSData with embedded data
NSRange range = [data rangeOfData:magicStartData options:0 range:NSMakeRange(0, [data length])];
if (range.location != NSNotFound) {
  // This assumes the subdata doesn't have a specific range and is just everything
  // after the magic, otherwise adjust
  NSData* subdata = [data subdataWithRange:NSMakeRange(range.location, [data length] - range.location)];
}

关于cocoa - 如何检查 NSData 对象是否包含子 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18477710/

相关文章:

swift - Apple Swift 3.0 数据

objective-c - 当前有关高级内存管理的 Apple 文档是否有轻微的不准确之处?

cocoa - 在 NSView 中执行拖放时出现 kCGErrorFailure

cocoa - 如何从 UIImage (Cocoa Touch) 或 CGImage (Core Graphics) 获取像素数据?

ios - 检查下载的 NSData 哈希

ios - swift 中 NSRangeException 的错误处理

objective-c - Cocoa 应用程序最简单的 Markdown 实现是什么?

cocoa - 从 cocoa 应用程序中使用 Qt 小部件

ios - NSData 到 NSArray 给出错误,原因如下 : '-[__NSCFArray bytes]:

ios - 将 UIImage 转换为 NSData 并在 Swift 中转换回 UIImage?