生成10位的永不重复的字母加数字

Recca0523 Recca0523 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位算法高手,公司有个需求算法小白我实在想不出来,求教。
需求是生成10位的永不重复的字母加数字,不能有特殊字符。
我的思路是用guid生成唯一code,通过md5(16)算出,然后GetHashCode(),之后用固定的字母数字对照表(比如1->A,2->D),生成一段10位的字母加数字。
问题在于GetHashCode返回的数据是不固定长度的,有9位有10,也就是我生成的长度不统一了。
各位有没有更好的办法啊?
其实要求就是每次生成的string必须是唯一的10位字符串,我不知道有什么好的算法,我自己的这种做法很傻,请各位指教。
取md5结果的前10能否永不重复?
用了guid 作为种子
现在就要解决,怎么把guid变成一个10位的数字加字母。

private string getStr()
{
string s = GetMd5Str(Guid.NewGuid().ToString());
return Math.Abs(s.GetHashCode()).ToString();
}


/// <summary>
/// MD5 16位加密
/// </summary>
/// <param name="ConvertString"></param>
/// <returns></returns>
private string GetMd5Str(string ConvertString)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);
t2 = t2.Replace("-", "");
return t2;
}
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
Recca0523
数据结构与算法 33,027 成员 35,334 内容