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(, lengthOfVoucher) // for(i.. )
.Select(k => keys[random.Next(, keys.Length - )]) // 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 = ;
int lengthOfVoucher = ; List<string> generatedVouchers = new List<string>();
char[] keys = "".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(, ),
vCode.Substring(, ),
vCode.Substring(, ))); //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 = ; i < ; ++i)
{
int rand = random.Next();
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(, ),
voucherCode.Substring(, ),
voucherCode.Substring(, )));
}
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 == )
{
throw new ArgumentNullException("input");
} int charCount = (int)Math.Ceiling(input.Length / 5d) * ;
char[] returnArray = new char[charCount]; byte nextChar = , bitsRemaining = ;
int arrayIndex = ; foreach (byte b in input)
{
nextChar = (byte)(nextChar | (b >> ( - bitsRemaining)));
returnArray[arrayIndex++] = ValueToChar(nextChar); if (bitsRemaining < )
{
nextChar = (byte)((b >> ( - bitsRemaining)) & );
returnArray[arrayIndex++] = ValueToChar(nextChar);
bitsRemaining += ;
} bitsRemaining -= ;
nextChar = (byte)((b << bitsRemaining) & );
} //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 < && value > )
{
return value - ;
}
//50-55 == numbers 2-7
if (value < && value > )
{
return value - ;
}
//97-122 == lowercase letters
if (value < && value > )
{
return value - ;
} throw new ArgumentException("Character is not a Base32 character.", "c");
}
private static char ValueToChar(byte b)
{
if (b < )
{
return (char)(b + );
} if (b < )
{
return (char)(b + );
} throw new ArgumentException("Byte is not a value Base32 value.", "b");
}

C#:优惠券代码的更多相关文章

  1. O2O淘宝优惠券代码总结

    一.数据集预处理 1.数据读入 import pandas as pd import numpy as np import datetime as date import datetime as dt ...

  2. 100个精选zencart扩展插件

    100个精选zencart扩展插件 特别推荐 1. 数据库备份 2. 产品横向布局. 3. 邮件订阅Newsletter Subscribe. 4. google 翻译google_translate ...

  3. 《Django By Example》第九章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag 注:哈哈哈,第九章终于来啦 ...

  4. Exp9 Web安全基础

    Exp9 Web安全基础 20154305 齐帅 一.实验要求 本实践的目标理解常用网络攻击技术的基本原理. Webgoat实践下相关实验: [目录] [第一部分 WebGoat 8.0] 1.Web ...

  5. 20155334 《网络攻防》 Exp9 Web安全基础

    <网络攻防> Exp9 Web安全基础 一.实验后回答问题 SQL注入攻击原理,如何防御: 原理: 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服 ...

  6. [转]nopCommerce 3.9 版本发行

    本文转自:http://www.cnblogs.com/xoray007/p/nopCommerce-39-release.html NopCommerce中文信息地址:http://www.nopc ...

  7. nopCommerce 3.9 版本发行

    NopCommerce中文信息地址:http://www.nopcn.com/nopcommerce39-blog-release-notes.html NopCommerce英文地址:http:// ...

  8. nopCommerce 4.10 发布了

    我们的开发工作主要集中在将nopCommerce转移到.NET Core 2.1,性能和架构改进,进一步增强和修复错误. NopChommerce 中文社区:http://www.nopcn.com ...

  9. webgoat 7.1 实战指南

    WSASP中文文档参考链接: http://www.owasp.org.cn/owasp-project/2017-owasp-top-10 OWASP Top 10 2017中文版V1.3http: ...

随机推荐

  1. NO.3 CAS配置问题汇总

    1. webapp对接到CAS认证时,若CAS Server端的tomcat配置了SSL,则对接的webapp所在的JAVA环境要导入CAS Server端tomcat所用的CRT证书,Windows ...

  2. schematool -dbType mysql -initSchema hive startup failed...try this

    schematool -dbType mysql -initSchema hive startup failed

  3. SqlServer性能优化 提高并发性能(八)

    并发访问: 当多个线程访问同一个资源,会产生并发性问题 并发控制与处理: 乐观并发控制:一种方式是"后来的更新者获胜"   这意味着先来的用户提交的值会在没有察觉的情况下丢失. 为 ...

  4. 转发 java数据结构之hashMap详解

    概要 这一章,我们对HashMap进行学习.我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括:第1部分 HashMap介绍第2部分 HashMa ...

  5. 音乐播放(AVAudioPlayer)

  6. Isostorespy 数据库无法打开的解决方案

    重装Sql Server Compact http://download.microsoft.com/download/0/9/D/09D6ECB6-7F46-4B93-BB45-586A30A778 ...

  7. 深入理解javascript中实现面向对象编程方法

    介绍Javascript中面向对象编程思想之前,需要对以下几个概念有了解: 1. 浅拷贝和深拷贝:程序在运行过程中使用的变量有在栈上的变量和在堆上的变量,在对象或者变量的赋值操作过程中,大多数情况先是 ...

  8. js中 ||的意思,js中 o = o || {};是什么意思呢?

    o = o || {} 表示:如果o为null或undefined,则将o初始化空对象(即{}),否则o不变.目的是防止o为null或未定义的错误. 其中:||表示或操作,第一个条件为真,则结果为真而 ...

  9. 特性Atrribute和枚举

    特性的简单实用!特性存放在metedata里面,它离不开反射. Program.cs class Program { static void Main(string[] args) { Console ...

  10. 在AndroidStudio不能找到so文件问题:couldn't find libweibosdkcore.so

    解决步骤已经写到我的公众号,二维码在下面. 欢迎观看我的CSDN学院课程,地址:http://edu.csdn.net/course/detail/2877 本人联系方式: 更多精彩分享,可关注我的微 ...