2013-02-24 161 views
-1

我想找到一種方法來爲一個字符串生成一個唯一的ID。在生成唯一的ID之後,我必須能夠通過使用該ID來取回我的字符串。爲不同的字符串生成唯一的ID?

String s =「這是字符串」;

的代碼序列後,我會得到一個字符串UNIQUEID

最後通過此UNIQUEID,我應該讓我的絃樂回(「這是字符串」)。

關於如何解決這個問題的任何想法?

我試着用String.GetHashCode解決這一點,但我遇到的警告從MSDN:

沒有爲每個唯一的字符串值獨特的哈希碼值。不同的字符串可以返回相同的哈希碼。

!觀察:我想在較長的字符串上使用此代碼序列。 (說1000字以上)

+4

給你提,我只想用字符串的約束(即無)。 – 2013-02-24 18:50:18

+1

您能否解釋您正在嘗試解決的*問題,而不是您的「解決方案」? – 2013-02-24 18:52:59

+0

你是什麼人「回來」?在字典中查找?還是應該轉變是可逆的?這個獨特的id有什麼類型? – CodesInChaos 2013-02-24 18:53:12

回答

2

你可以使用Base64嗎?

到這裏看看:http://msdn.microsoft.com/en-us/library/dhx0d524.aspx

static void Main(string[] args) 
{ 
    var encoded = Base64Encode("test string"); 
    var decoded = Base64Decode(encoded); 
} 

static string Base64Encode(string text) 
{ 
    var bytes = System.Text.UTF8Encoding.UTF8.GetBytes(text); 
    return System.Convert.ToBase64String(bytes);    
} 

static string Base64Decode(string encodedText) 
{ 
    var bytes = System.Convert.FromBase64String(encodedText); 
    return System.Text.UTF8Encoding.UTF8.GetString(bytes);    
} 
+2

有什麼好處,基地64只是使用原始字符串? – 2013-02-24 18:53:33

+1

@KentBoogaart由於XD – CodesInChaos 2013-02-24 18:54:43

+0

+1是可能的有效編碼/加密之一,所以它更長。此外,身份轉換會使結果稍微更短:) – 2013-02-24 18:54:43