C# GUID序列号转换生成唯一的16位短字符串或19位长数字序号
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
/// 将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转换成短的字符串如: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
/// 获得一个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

参考文档:
编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root
C# 将GUID转换为最长16位的短字符串序号
Visual Studio2019安装C#环境,vs2019安装c#-C/S开发框架
VS2022/.NET7:CA1416:可在所有平台上访问此调用站点。"xxx"仅在 'windows'上受支持。
SqlBulkCopy.WriteToServer报错:“Unable to cast object of type 'System.Guid' to type 'System.String'.”
VS2019编译:无法嵌入互操作类型 请改用适用的接口|C/S开发框架
vs2019 调试IIS服务器代码-C/S开发框架
Visual Studio 2019 (C#/.NET)安装教程-C/S开发框架
我安装了DevExpress19.2.8为什么VS2019工具箱没有Dev控件?
C#源码-小黄豆CRM v1.17.2.1116源码-源码下载
软件开发与设计 - CRM-客户关系管理系统-小黄豆CRM v1.17.2.1116
VS运行WebApplication网站程序提示“ID为13316的进程当前未运行。”
在前缀“http://localhost:19893/”上侦听失败,因为它与计算机上的现有注册冲突
C/SWinform快速开发框架旗舰版V5 - 超酷炫UI珠宝行业MES/ERP系统成功案例2019
CSFramework快速开发框架旗舰版V5 - 电子商务管理软件成功案例2019
C/S系统开发框架成功案例-煤矿自动化MES系统(2016)
编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root
C# 将GUID转换为最长16位的短字符串序号
Visual Studio2019安装C#环境,vs2019安装c#-C/S开发框架
VS2022/.NET7:CA1416:可在所有平台上访问此调用站点。"xxx"仅在 'windows'上受支持。
SqlBulkCopy.WriteToServer报错:“Unable to cast object of type 'System.Guid' to type 'System.String'.”
VS2019编译:无法嵌入互操作类型 请改用适用的接口|C/S开发框架
vs2019 调试IIS服务器代码-C/S开发框架
Visual Studio 2019 (C#/.NET)安装教程-C/S开发框架
我安装了DevExpress19.2.8为什么VS2019工具箱没有Dev控件?
C#源码-小黄豆CRM v1.17.2.1116源码-源码下载
软件开发与设计 - CRM-客户关系管理系统-小黄豆CRM v1.17.2.1116
VS运行WebApplication网站程序提示“ID为13316的进程当前未运行。”
在前缀“http://localhost:19893/”上侦听失败,因为它与计算机上的现有注册冲突
C/SWinform快速开发框架旗舰版V5 - 超酷炫UI珠宝行业MES/ERP系统成功案例2019
CSFramework快速开发框架旗舰版V5 - 电子商务管理软件成功案例2019
C/S系统开发框架成功案例-煤矿自动化MES系统(2016)
其它资料:
什么是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内容管理系统 |
什么是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内容管理系统 |
在线客服
