C# GUID序列号转换生成唯一的16位短字符串或19位长数字序号
![]() 当我们想要生成一个唯一key的时候,通常会想到GUID,如:DF52435C-FB0C-46FD-9634-A46BA8723A58 这个key非常的长,缩短GUID的长度且不牺牲它的唯一性是不可能的,若我们能接受一个16位的字符串可以采取下面的算法生成短字符串。 将标准的GUID DF52435C-FB0C-46FD-9634-A46BA8723A58 转换成短的字符串, 如:3c4ebc5f5f2c4edc 算法1: C# Code: /// <summary> /// 将GUID转换为最长16位的序号字符串 /// </summary> /// <param name="removeZero">移除后面的000,d6acd6cb8621a000==>d6acd6cb8621a</param> /// <returns></returns> public static string GetSysID(bool removeZero = true) { long result = 1; int index = 1; byte[] bs = Guid.NewGuid().ToByteArray(); foreach (byte b in bs) { result *= ((int)b + index * 2); index++; } var hex = string.Format("{0:x}", result); //d6acd6cb8621a000==>d6acd6cb8621a if (removeZero)//移除后面的000 { while (hex.Substring(hex.Length - 1, 1) == "0") hex = hex.Substring(0, hex.Length - 1); } return hex; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 算法2: C# Code: /// <summary> /// 将一个标准的GUID转换成短的字符串如:3d4ebc5f5f2c4ede,生成1亿次都不会出现重复。 /// </summary> /// <returns></returns> public static string GenerateStringID() { long i = 1; foreach (byte b in Guid.NewGuid().ToByteArray()) { i *= ((int)b + 1); } return string.Format("{0:x}", i - DateTime.Now.Ticks); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 将标准的GUID获得一个19位长的序列,8346734568923542345,生成1亿次都不会出现重复。 C# Code: /// <summary> /// 获得一个19位长的序列,8346734568923542345,生成1亿次都不会出现重复。 /// </summary> /// <returns></returns> public static string GenerateIntID() { byte[] buffer = Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(buffer, 0).ToString(); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 ![]() 扫一扫加微信 ![]() ![]()
参考文档:
C# 自动计算字符串公式的值(三种方式) C#.NET史上最全字符串加密/解密/数字签名工具(CryptoHelper.cs) C#.NET 对象(字符串)转换常用扩展方法 C#.NET 定义动态对象dynamic以及转换JSON字符串 C#日期类型转换工具(时间戳,字符串,long,byte类型互转) C# WebApi将查询字符串RequestUri.Query解析转换为Hashtable C#正则表达式查找或替换指定字符串(标识)范围的内容 C#使用分词算法从文本字符串中抽取关键词模拟百度搜索|CSFramework.COM巨献 C#类扩展方法,字符串对象转换,常用扩展方法StringExtensions C# 生成日期时间数字唯一序号,尾部添加指定位数长度的随机码 C# MD5字符串文本加密 C# 将GUID转换为最长16位的短字符串序号 C# 获取字符串实际长度(总字节数)中文2字节字母1字节 C# 将数组、集合、可枚举类型转换成逗号分隔的字符串(String.Join) TypeConverter.ConvertFromString 通用方法:字符串转换为具体的类型
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |