试图在C#中复制一些PHP代码.PHP代码使用uniqid函数,并将更多entropy参数设置为true.知道如何在C#中最好地复制它吗?
就像是:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:反映评论
这是一个非常简单的解决方案,我建议您使用更严格的解决方案来调查正确的'随机'数字'生成,例如直接通过System.Math命名空间.请查看随机数生成的其他SO问题和答案.
System.Guid.NewGuid().toString()方法
会给你一个独特的字符串.
经过一些谷歌搜索后,我发现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");
}
Run Code Online (Sandbox Code Playgroud)
此代码提供完全相同的结果,唯一的区别是未实现uniqid()的额外参数.
| 归档时间: |
|
| 查看次数: |
5136 次 |
| 最近记录: |