我是一名大学生,我们的任务是创建一个搜索引擎。当添加到边界中时,我很难生成唯一的id来分配给每个url。我尝试使用SHA-256散列算法和Guid。下面是我用来实现guid的代码:
public string generateID(string url_add)
{
long i = 1;
foreach (byte b in Guid.NewGuid().ToByteArray())
{
i *= ((int)b + 1);
}
string number = String.Format("{0:d9}", (DateTime.Now.Ticks / 10) % 1000000000);
return number;
}发布于 2012-07-03 22:36:14
为什么不直接使用ToString呢?
public string generateID()
{
return Guid.NewGuid().ToString("N");
}如果您希望它是基于URL的,您可以简单地执行以下操作:
public string generateID(string sourceUrl)
{
return string.Format("{0}_{1:N}", sourceUrl, Guid.NewGuid());
}如果你想隐藏网址,你可以在sourceURL上使用某种形式的SHA1,但我不确定这样做会有什么效果。
发布于 2012-07-03 22:34:55
为什么不使用GUID
Guid guid = Guid.NewGuid();
string str = guid.ToString();发布于 2017-07-07 08:27:44
这是一个类似于“YouTube-video- id”的id生成器。"UcBKmq2XE5a“
StringBuilder builder = new StringBuilder();
Enumerable
.Range(65, 26)
.Select(e => ((char)e).ToString())
.Concat(Enumerable.Range(97, 26).Select(e => ((char)e).ToString()))
.Concat(Enumerable.Range(0, 10).Select(e => e.ToString()))
.OrderBy(e => Guid.NewGuid())
.Take(11)
.ToList().ForEach(e => builder.Append(e));
string id = builder.ToString();它创建11个字符大小的随机It。您也可以增加/减少它,只需更改Take方法的参数。
0.001%的重复项。
https://stackoverflow.com/questions/11313205
复制相似问题