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. 如何利用Matlab进行ROC分析

    ROC曲线基本知识: 判断分类器的工作效率需要使用召回率和准确率两个变量. 召回率:Recall,又称"查全率", 准确率:Precision,又称"精度".& ...

  2. TeamWork-天气美食

    一.  团队情况      Hello,欢迎来到我们"Code Man"队的第一次团队作业页面,"代码侠"很明显我们是一个编程队伍,由大三在读的6位同班同学组成 ...

  3. MVC 使用 Webuploader 插件 传递额外参数 备忘笔记

    // 实例化 uploader = WebUploader.create({ pick: { id: '#filePicker-2', label: '点击选择图片' }, formData: { k ...

  4. 十个最适合 Web 和 APP 开发的 NodeJS 框架

    在浏览器以外运行 JavaScript 对于 JavaScript 爱好者来说非常神奇,同时也肯定是 web 应用程序开发界最受欢迎的进步之一.全球各地的开发者张开双臂拥抱 NodeJS. 对于新手来 ...

  5. 深入理解ecshop2.7.3整合discuzX3.2(97%的完美方案)

    转载http://blog.csdn.net/squallleonheart/article/details/39555259 ecshop整合discuzX3.2 ecshop安装包:ECShop_ ...

  6. jquery 操作

    Jquery使用时要引用,引用时放在最前. Jquery: $代表选择器, $(document) ready(function(e){}):找到页面,页面加载完成后执行. JS选取元素操作内容操作属 ...

  7. 安卓四大组件之activity和获取网络资源之断点续传

    Day05 数据存储及多线程断点续传1.数据提交到服务器两种方式的优缺点* GET请求优点:使用非常方便,只需要在url后面组拼数据.缺点:数据在url的后面组拼,不安全.有数据长度限制.* POST ...

  8. JDBC连接数据库(PreparedStatement)

    PreparedStatement是在数据库端防止SQL注入漏洞的SQL方法这里演示了一些基本使用方法同样使用Oracle数据库,之前已经手动建立了一张t_account表数据库代码参见上一篇< ...

  9. 集成ShareSDK,分享成功后QQ和空间回调不执行的可能原因

    AndroidMainifest.xml中的如箭头所示的id与assets下ShareSDK.xml中配置的QQ的AppId一定要相同.

  10. bootstrap-15

    缩略图:缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或者右侧)带有标题.描述信息.Bootstrap框架将这一部独立成一个模块组件,并通过thumbnail样式配 ...