加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C#中创建一个独特的随机字符序列?

发布时间:2020-12-15 08:33:04 所属栏目:百科 来源:网络整理
导读:我正在我的应用程序中实现URL缩短功能,以便为我的用户提供可在Twitter中使用的更短的替代URL.关键是要独立于提供同样服务的缩短服务,并将其作为我的网络应用程序的一项功能. 创建一个大约6个字符的独特随机字符序列的最佳方法是什么?我计划将其用作我的数据
我正在我的应用程序中实现URL缩短功能,以便为我的用户提供可在Twitter中使用的更短的替代URL.关键是要独立于提供同样服务的缩短服务,并将其作为我的网络应用程序的一项功能.

创建一个大约6个字符的独特随机字符序列的最佳方法是什么?我计划将其用作我的数据库中具有备用URL的项目的索引.

编辑:

此功能将用于工作板网站,其中每个新的工作广告都将获得带有标题的自定义URL以及要在Twitter中使用的较短的URL.也就是说,长期以来,独特的6个字符组合的总数将绰绰有余.

解决方法

你真的需要’随机’,还是’独特’就足够了?

Unique非常简单 – 只需将URL插入数据库,然后将该记录的顺序ID转换为base-n数字,该数字由您选择的characterset表示.

例如,如果您只想在序列中使用[A-Z],则将记录的id转换为基数为26的数字,其中A = 1,B = 2,… Z = 26. algothithm是递归div26 / mod26,其中商是必需字符,余数用于计算下一个字符.

然后在检索URL时,执行反函数,即将base-26数转换回十进制数.执行SELECT URL WHERE ID = decimal,你就完成了!

编辑:

private string alphabet = "abcdefghijklmnopqrstuvwxyz"; 
   // or whatever you want.  Include more characters 
   // for more combinations and shorter URLs

public string Encode(int databaseId)
{
    string encodedValue = String.Empty;

    while (databaseId > encodingBase)
    {
        int remainder;
        encodedValue += alphabet[Math.DivRem(databaseId,alphabet.Length,out remainder)-1].ToString();
        databaseId = remainder;
    }
    return encodedValue;
}

public int Decode(string code)
{
    int returnValue;

    for (int thisPosition = 0; thisPosition < code.Length; thisPosition++)
    {
        char thisCharacter = code[thisPosition];

        returnValue += alphabet.IndexOf(thisCharacter) * 
            Math.Pow(alphabet.Length,code.Length - thisPosition - 1);
    }
    return returnValue;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读