首页 新闻 搜索 专区 学院

C#中随机生成一串字母+数字的字符串,用做表单编号怎么生成啊,随机生成的表单编号不能重复啊?

0
[已关闭问题]

C#中随机生成一串字母+数字的字符串,用做表单编号怎么生成啊,随机生成的表单编号不能重复啊?

天气预报的主页 天气预报 | 初学一级 | 园豆:200
提问于:2009-07-20 23:33
< >
分享
其他回答(3)
0

先用RNGCryptoServiceProvider生成一个字节数组,然后把字节数组转成字符串,由于我没有IDE,RNG那块忘记了,就写个字节数组转字符串的给你

public string BytesToHex(byte[] bytes) {

  StringBuilder str = new StringBuilder(bytes.Length * 2);

  foreach (byte b in bytes) {

    str.AppendFormat("{0:X2}", b);

  }

  return str.ToString();

}

Gray Zhang | 园豆:17610 (专家六级) | 2009-07-20 23:44
0

建议还是直接用全球唯一标识符(GUID)好了,GUID可被视作永不重复的,并且在不同计算机之前也不会重复,生成方法极简单:

var 编号=Guid.NewGuid().ToString();

生成的格式如:4546a166-b647-46f7-8409-9789ec8f8324

如果不想要“-”符号,那就:

var 编号=Guid.NewGuid().ToString("n");

生成的格式如:4546a166b64746f784099789ec8f8324

这样即使有多家分公司或分理处共同使用这一种系统生成表单,也不会有重复值,可以很方便地交换、合并数据。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-07-21 00:11
0

string a  = String.Format("{0}{1}", DateTime.Now.ToString("yyyyMMddHHmmss"),Guid.NewGuid().ToString().Split('-')[4]);
Console.WriteLine(a.ToUpper());

这个绝对不会重复:时间精确到秒,取Guid生成的最后一个字串。

表单有日期也利于统计。

winzheng | 园豆:8797 (大侠五级) | 2009-07-21 12:31
0
Insus.NET | 园豆:932 (小虾三级) | 2009-07-21 13:14
呃同样的问题.如果我短时间内生成一组的话重复的太多了点。
支持(0) 反对(0) 暗香浮动 | 园豆:361 (菜鸟二级) | 2009-12-07 14:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册