PHP相当于C#中的uniqid()

时间:2009-08-22 13:53:40

标签: c# php

尝试在C#中复制一些PHP代码。 PHP代码使用uniqid函数,并将更多entropy参数设置为true。知道如何在C#中最好地复制它吗?

http://us2.php.net/uniqid

2 个答案:

答案 0 :(得分:8)

类似的东西:

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);
    }
 }

编辑:反映评论

这是一个非常简单的脱离我的头脑解决方案,我建议对于更严格的解决方案,你要调查正确的'随机'数字'代,例如通过系统。 Math命名空间直接。请参阅其他SO questions and answers on random number generation

System.Guid.NewGuid()。ToString()

会给你一个独特的字符串。

答案 1 :(得分:7)

经过一些谷歌搜索后,我发现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()的额外参数未实现。