static Random random = new Random(); List<string> generatedVouchers = new List<string>(); char[] keys = "ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890".ToCharArray(); private static string GenerateVoucher(char[] keys, int lengthOfVoucher) { return Enumerable .Range(1, lengthOfVoucher) // for(i.. ) .Select(k => keys[random.Next(0, keys.Length - 1)]) // generate a new random char .Aggregate("", (e, c) => e + c); // join into a string } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int vouchersToGenerate = 12; int lengthOfVoucher = 12; List<string> generatedVouchers = new List<string>(); char[] keys = "1234567890".ToCharArray(); //while (generatedVouchers.Count < vouchersToGenerate) //{ // var voucher = GenerateVoucher(keys, lengthOfVoucher); // if (!generatedVouchers.Contains(voucher)) // { // generatedVouchers.Add(voucher); // Response.Write(string.Format("<br>[#{0}] {1}", generatedVouchers.Count, voucher)); // } //} string vCode = GenerateVoucher(keys, lengthOfVoucher); Response.Write("<br>" + string.Format("{0}-{1}-{2}", vCode.Substring(0, 4), vCode.Substring(4, 4), vCode.Substring(8, 4))); //Response.Write("<br>" + string.Format("{0}", vCode.Substring(0, 4))); //Response.Write("<br>" + string.Format("{0}", vCode.Substring(4, 4))); //Response.Write("<br>" + string.Format("{0}", vCode.Substring(8, 4))); Response.Write("<br>-------------------------------------------------------------------<br>"); //********************************************************************************************** Random random = new Random(); DateTime timeValue = DateTime.MinValue; System.Text.Encoding big5 = System.Text.Encoding.GetEncoding("big5"); System.Text.Encoding gb2312 = System.Text.Encoding.GetEncoding("gb2312"); // Create 10 codes just to see the random generation. for (int i = 0; i < 10; ++i) { int rand = random.Next(3600); timeValue = timeValue.AddMinutes(rand); byte[] buffer = System.BitConverter.GetBytes(timeValue.Ticks); string voucherCode = ToBase32String(buffer); //BitConverter.ToString(buffer); Response.Write("<br>" + string.Format("{0}-{1}-{2}", voucherCode.Substring(0, 4), voucherCode.Substring(4, 4), voucherCode.Substring(8, 5))); } Response.Write("<br>-------------------------------------------------------------------<br>"); //********************************************************************************************** //System.Guid g = System.Guid.NewGuid(); //Random rn = new Random(); //string gs = g.ToString(); //int randomInt = rn.Next(5, 10 + 1); //Response.Write("<br>" + gs.Substring(gs.Length - randomInt - 1, randomInt)); } } public static string ToBase32String(byte[] input) { if (input == null || input.Length == 0) { throw new ArgumentNullException("input"); } int charCount = (int)Math.Ceiling(input.Length / 5d) * 8; char[] returnArray = new char[charCount]; byte nextChar = 0, bitsRemaining = 5; int arrayIndex = 0; foreach (byte b in input) { nextChar = (byte)(nextChar | (b >> (8 - bitsRemaining))); returnArray[arrayIndex++] = ValueToChar(nextChar); if (bitsRemaining < 4) { nextChar = (byte)((b >> (3 - bitsRemaining)) & 31); returnArray[arrayIndex++] = ValueToChar(nextChar); bitsRemaining += 5; } bitsRemaining -= 3; nextChar = (byte)((b << bitsRemaining) & 31); } //if we didn't end with a full char if (arrayIndex != charCount) { returnArray[arrayIndex++] = ValueToChar(nextChar); while (arrayIndex != charCount) returnArray[arrayIndex++] = '='; //padding } return new string(returnArray); } private static int CharToValue(char c) { int value = (int)c; //65-90 == uppercase letters if (value < 91 && value > 64) { return value - 65; } //50-55 == numbers 2-7 if (value < 56 && value > 49) { return value - 24; } //97-122 == lowercase letters if (value < 123 && value > 96) { return value - 97; } throw new ArgumentException("Character is not a Base32 character.", "c"); } private static char ValueToChar(byte b) { if (b < 26) { return (char)(b + 65); } if (b < 32) { return (char)(b + 24); } throw new ArgumentException("Byte is not a value Base32 value.", "b"); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!