我希望能够在C#中复制一些PHP代码。该PHP代码使用uniqid函数,并将更高熵参数设置为true。有什么好的方法可以在C#中最好地复制这个功能呢?
我希望能够在C#中复制一些PHP代码。该PHP代码使用uniqid函数,并将更高熵参数设置为true。有什么好的方法可以在C#中最好地复制这个功能呢?
通过一些谷歌搜索,我找到了PHP的uniqid如何工作,并在C#中实现了它:
private string GetUniqID()
{
var ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0));
double t = ts.TotalMilliseconds / 1000;
int a = (int)Math.Floor(t);
int b = (int)((t - Math.Floor(t)) * 1000000);
return a.ToString("x8") + b.ToString("x5");
}
这段代码提供了完全相同的结果,唯一的区别是未实现uniqid()的额外参数。
something like:
string uniqid(string prefix, bool more_entropy) {
if(string.IsNullOrEmpty(prefix))
prefix = string.Empty;
if (!more_entropy) {
return (prefix + System.Guid.NewGuid().ToString()).Left(13);
} else {
return (prefix + System.Guid.NewGuid().ToString() + System.Guid.NewGuid().ToString()).Left(23);
}
}
编辑:为了反映评论意见
这是一个非常简单的脑海中的解决方案,我建议您研究正式的“随机”数字生成,例如通过System.Math命名空间直接实现。请参阅关于随机数生成的这些其他SO问题和答案,以获取更严谨的解决方案。
System.Guid.NewGuid().ToString()
将为您提供唯一的字符串。