2011-10-18 68 views
1

我有 NSData *object1和另一个NSData *object2。我怎样才能比较这些对象的百分比他们是相似的?例如:Object1类似于Object2中的 - 99%。谢谢。NSData与百分比NSData比较

回答

4

获取在两种情况下字节,并检查其中有多少是相等的迭代。

uint8_t* bytes1 = (uint8_t*)[object1 bytes]; 
uint8_t* bytes2 = (uint8_t*)[object2 bytes]; 

NSUInteger sameCount = 0; 
for (NSUInteger i = 0 ; i < MIN([object1 length], [object2 length]) ; ++i) 
{ 
    if (bytes1[i] == bytes2[i]) 
    { 
     sameCount++; 
    } 
} 

double fractionSame = (double) sameCount/(double) MIN([object1 length], [object2 length]); 

上面假设如果一个数据比另一个长,你不关心多余。

+0

谢谢,太棒了! – LightNight

1

它确实取决于逻辑。例如,如果您尝试比较图像(并将其数据存储为NSData),则需要write image comparison algorithms。如果它是其他类型的数据,那么你首先需要定义该语义。如果一切都失败了,我认为@JeremyP答案应该就足够了。