【发布时间】:2013-03-04 10:26:16
【问题描述】:
我正在寻找一种将字符串转换为唯一 ID 的方法。
为发送给它的每个字符串提供一个唯一编号的算法邀请的想法。
我尝试使用哈希码,但后来意识到两个字符串可能具有相同的哈希码。
如何为每个字符串生成一个唯一代码作为输入,并且两个相同的字符串应该始终为我生成相同的 id。
【问题讨论】:
-
我每次都需要相同的字符串来生成相同的 id。我认为 guid 不适合这里。
-
@GutterStink - 你已经回答了你自己的问题。要么,要么你在要求一些不可能的事情。哈希将始终为两个相同的字符串生成相同的代码。如果您希望两个字符串“以不同方式”发送以生成唯一 ID,但还让它们每次都继续生成相同的 ID,如果没有额外的元数据,这是不可能的。
-
从一个新问题开始,满足您的所有要求(例如,唯一 ID 的大小 - 它是整数还是字符串等)
-
两个字符串有 1:2^32 的机会拥有相同的哈希码(假设
string.GetHashCode是“好”)。你确定你不能忍受吗? -
你想用数字重新创建一个字符串吗?如果是,那么也许看看一些数据压缩算法(例如en.wikipedia.org/wiki/LZ77_and_LZ78_(algorithms))?