如何生成唯一的字母数字?
如何使用c#始终生成17个字符的唯一字母数字数据。
生成新的Guid,并用模62分割17次。你得到的每个数字都是上面描述的char数组中的索引(“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ1234567890”)。 通过使用Guid,您可以保证您的价值与Guid一样独特。
如果您担心丢失唯一位,您可以使用MD5散列GUID,如下所示:
Guid guidValue = Guid.NewGuid(); MD5 md5 = MD5.Create(); Guid hashed = new Guid(md5.ComputeHash(guidValue.ToByteArray()));
更新 Guid格式
根据该文档( RFC 4122 )并与C#生成的GUID进行比较,它们是随机类型。
此类型具有以下模式: xxxxxxxx-xxxx-4xxx-Vxxx-xxxxxxxxxxxx
,其中
所以,这里我们有128个随机位。因此,就唯一性而言,Guid只是一个大的随机数,您可以自由使用任何其他能够生成88位随机数的随机数生成算法(例如RNGCryptoServiceProvider
)。
当然,用于生成Guids的方法可能会在未来版本的框架中发生变化,但目前Guid.NewGuid()在代码方面看起来像廉价的随机数生成器。
你可以尝试… https://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename.aspx
GetRandomFileName方法返回加密强大的随机字符串,可用作文件夹名称或文件名。
或者无论你想要什么。
你可以有硬编码的字符集 –
char[] chars = new char[62]; chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ1234567890".ToCharArray();
然后使用0到62之间的随机数,每次都可以获得随机字符并附加到字符串中。
但是,您无法保证在某个时间段内,您也不会获得重复的字母数字字符串。
作为替代方案,如果可能,为什么不使用GUID ?
上述就是C#学习教程:如何生成唯一的字母数字?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/990136.html