2011-10-18 71 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答案應該就足夠了。