博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#生成唯一的字符串或者数字
阅读量:4553 次
发布时间:2019-06-08

本文共 859 字,大约阅读时间需要 2 分钟。

  当我们想要获得一个唯一的key的时候,通常会想到GUID。这个key非常的长,虽然我们在很多情况下这并不是个问题。但是当我们需要将这个36个字符的字符串放在URL中时,会使的URL非常的丑陋。

      想要缩短GUID的长度而不牺牲它的唯一性是不可能的,但是如果我们能够接受一个16位的字符串的话是可以做出这个牺牲的。

      我们可以将一个标准的GUID 21726045-e8f7-4b09-abd8-4bcc926e9e28  转换成短的字符串 3c4ebc5f5f2c4edc

      下面的方法会生成一个短的字符串,并且这个字符串是唯一的。重复1亿次都不会出现重复的,它也是依照GUID的唯一性来生成这个字符串的。

      jihua.cnblogs.com

private 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);        }

 

      如果你想生成一个数字序列而不是字符串,你将会获得一个19位长的序列。下面的方法会把GUID转换为Int64的数字序列。

       

private long GenerateIntID()        {            byte[] buffer = Guid.NewGuid().ToByteArray();            return BitConverter.ToInt64(buffer, 0);        }

转载于:https://www.cnblogs.com/jihua/archive/2012/09/24/2700232.html

你可能感兴趣的文章
理解同步,异步和延迟脚本
查看>>
MMS源码中异步处理简析
查看>>
XMind 6 如何画流程图
查看>>
final发布评价
查看>>
DLL远程注入与卸载
查看>>
Jmeter-ForEach控制器
查看>>
Checklist: 2019 05.01 ~ 06.30
查看>>
和菜鸟一起深入学习国嵌实验之进程创建,exec函数,进程等待
查看>>
Binary XML file : Error inflating class com.esri.android.map.MapView
查看>>
grep,awk和sed
查看>>
linux tomcat开机自启/nginx开机自启
查看>>
Android学习笔记(四十):Preference的使用
查看>>
CSS: 解决Div float后,父Div无法高度自适应的问题
查看>>
opengl编程指南
查看>>
游戏开发实验室的内部讲座总结----c++
查看>>
表单验证,与多语言支持,CI
查看>>
C# 扩展方法
查看>>
WPF MVVM框架PRISM
查看>>
UVa 208 - Firetruck <双向DFS>
查看>>
winform treeview绑定数据 DOM操作
查看>>