2013-01-09 103 views
2

我有一個從圖像轉換而來的base64字符串(源字符串),我需要一個代碼將該字符串與Web服務上的另一個base64字符串進行比較,並檢查哪個字符串與源字符串最相似,即我使用的語言是C#,任何人都可以幫助我?如何比較兩個base64字符串?

+6

您是否試圖確定圖像是*確切*匹配還是近距離匹配?您只能通過比較base64字符串來確定*確切*匹配。 – cfeduke

+1

請定義「與源字符串最相似」的含義。它可能是[Levenshtein距離](http://en.wikipedia.org/wiki/Levenshtein_distance),但你也提到了圖像...... –

+0

@cfeduke,問題說「比較字符串」,所以「類似」也是可能的(但正如你所指出的,這可能不是OP想要的)。 –

回答

3

您可以輕鬆比較字符串,也可以通過在每端使用MD5校驗和來節省一些帶寬。

找到「最相似之處」就是算法的實現。只有你知道「最相似之處」的含義。

0

如果你正在尋找的總位數是不同的,你可以使用這樣的事情:

private long Base64BitsDifferent(string first64, string second64) 
{ 
    long toReturn = 0; 

    byte[] firstBytes = Convert.FromBase64String(first64); 
    byte[] secondBytes = Convert.FromBase64String(second64); 
    byte different = 0; 

    for (int index = 0; index < firstBytes.Length; index++) { 
     different = (firstBytes[index]^secondBytes[index]); 

     while (different != 0) { 
      toReturn++; 
      different &= different - 1; 
     } 
    } 

    return toReturn; 
} 

假設兩個Base64編碼字符串表示的字節數是相等的。