C#使用GUID(全局统一标识符)
作者:農碼一生 发布时间:2022-08-23 10:25:25
标签:C#,GUID,全局,统一,标识符
一、简介
1.什么是GUID?
全局唯一标识符(GUID,Globally Unique Identifier),GUID也称作 UUID(Universally Unique IDentifier) 。GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。
2.为什么要使用GUID?
在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。
(1). GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。
(2). GUID永远是方便的
对于程序开发的各个方面,.NET Framework简化了建立和处理GUID数值的过程。在.NET程序需要的地方,这一功能很容易地生成唯一的数值。
二、代码案例
class Program
{
static void Main(string[] args)
{
var uuid = Guid.NewGuid().ToString(); // 67b69599-5026-4765-8707-def49a214219
var uuidN = Guid.NewGuid().ToString("N"); // f93618e93beb4a4181526d7a38c169a4
var uuidD = Guid.NewGuid().ToString("D"); //c747ac63-a9c2-46f9-80d7-f635c330a59f
var uuidB = Guid.NewGuid().ToString("B"); // {2a77d03e-0366-4977-97f1-229c17fe906f}
var uuidP = Guid.NewGuid().ToString("P"); // (8165193f-8595-439d-bbaf-9ce55171eecf)
var uuidX = Guid.NewGuid().ToString("X"); // {0x48645e66,0xbe0c,0x4990,{0x8e,0xee,0x3c,0x84,0xba,0xda,0x0d,0x83}}
var guid1 = GenerateId1();//5a0aec9398c64e09
var guid2 = GenerateId2();//4976172849618296785
}
private static string GenerateId1()
{
long i = 1;
foreach (byte b in Guid.NewGuid().ToByteArray())
{
i *= ((int)b + 1);
}
return string.Format("{0:x}", i - DateTime.Now.Ticks);
}
private static long GenerateId2()
{
byte[] buffer = Guid.NewGuid().ToByteArray();
return BitConverter.ToInt64(buffer, 0);
}
}
三、总结
这里的D,N,B,P是不区分大小写的,如果传入空字符串,则使用的默认的D类型,其它情况都会报异常。
来源:https://www.cnblogs.com/wml-it/p/14832583.html


猜你喜欢
- 实践过程效果代码public partial class Form1 : Form {
- 一丶前言在之前我们学习了SpringBoot自动装配如何实现的,我们总结了Spring IOC的底层原理。但是我们还是不知道SpringAp
- 目录概述基本使用1. 在低层 module_common 中声明服务2. 在上层 module 中实现服务3. 在其它上层 module 中
- InputStreamReader 类1、概述转换流 java.io.InputStreamReader ,是Reader的子类,是从字节流
- 在用maven打包时,出现过如下两个错误:错误1:程序包javax.servlet不存在,程序包javax.servlet.http不存在错
- Java面向对象编程之多态一.对于多态的理解:通俗点理解,多态其实就是一词多义,就是一种方法的多种状态,即不同的类对象,调用同一个方法名,有
- 在upload.jsp页面中将多个文件域对象命名为相同的名字,这样在action中就可以将多个文件域解析成一个数组,数组的大小就是文件域的个
- 这篇文章主要介绍了java private关键字用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 一:模式说明模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求
- 显示一个计时器开始计时,当计时器到达15s的时候,停止计时。此时页面多一个重置按钮,可再次进行计时。页面布局<LinearLayout
- Android 中在有序广播中添加自定义权限的实例前言;有序广播说明:有序广播因为要处理消息的处理结果,所以要复杂一些。 * sendOrd
- 本文实例讲述了WinForm实现自定义右下角提示效果的方法。分享给大家供大家参考。具体实现方法如下:using System;using S
- **********************************************************************
- Java多线程线程的创建1.继承Thread2.实现Runnable3.实现Callable使用继承Thread类来开发多线程的应用程序在设
- IDEA 2020.1 版自动导入MAVEN依赖的方法(新版MAVEN无法自动导入/更新POM依赖、MAVEN设置自动更新、自动更新快捷键)
- 1>方法一之前在配置 Maven 的 settings.xml 时,都会设置 mirror 节点,例如:<mirrors>
- 本文由老王家组装电脑引出——建造者设计模式,详细介绍建造者模式的基本概念和实现代码,为了便于理解建造
- 在测试过程中,我们有时候需要一个唯一不重复的值(比如order_id)。我之前一直用的时间戳+计数器/随机函数拼接,但是有时候效果不太好,今
- 1. Spring 是什么我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是一个开源框架,有
- 本文实例为大家分享了Android Studio实现登录界面的具体代码,供大家参考,具体内容如下题目设计一个登录界面。要求:a) 包含用户名