• 【超实用】教你生成GUID


    oi,好久不见呀,最近又许久未更新了。大家也都在催更ERP的文章,可最近着实比较忙,趁今天有点小空隙,给大家分享个非常实用的代码,生成GUID。

    我们先来看两个概念,在知道什么是GUID之前,必须要先知道UUID,什么是UUID呢?我们来看一下概念。

    UUID

    UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。另外我们也可以在e2fsprogs包中的UUID库找到实现。

    那知道了UUID知道,我们来看看GUID的概念

    GUID

    全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。GUID一词有时也专指微软对UUID标准的实现。

    那GUID是怎么组成的呢?

    GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制数。

    在了解了概念之后,那我们就来动手吧。

    01、建窗体

    还是老老老规矩,我们先来创建一个窗体,在窗体上放两个控件,一个文本框,一个按钮,分别命名为txtGUID,btnGUID

    02、添加代码

    接着我们来添加一下代码,我们给按钮添加一下单击事件,代码如下:

    Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (ByRef guid As Any) As LongPrivate Sub btnGUID_Click() Dim guid(0 To 15) As Byte    Dim i As Long    Dim strGUID As String        ' 调用CoCreateGuid函数生成GUID    Call CoCreateGuid(guid(0))        ' 将字节数组转换为字符串形式的GUID    For i = 0 To 15        strGUID = strGUID & Right("00" & Hex(guid(i)), 2)        If i = 3 Or i = 5 Or i = 7 Or i = 9 Then            strGUID = strGUID & "-"        End If    Next i    Me.txtGUID = strGUIDEnd Sub

    03、运行测试

    最后,我们运行测试一下,结果如下:

    这里我们用到了API函数CoCreateGuid,通过调用API来实现生成GUID,其实还要以用另一个方法,可以利用Scriptlet.TypeLib 对象来实现,但会有问题,容易报“拒绝的权限”错误,这是因为由于安全限制,可能需要在计算机上注册并访问COM组件,所以这里,我直接调用了API函数。

    好了,大家快去测试一下吧。

  • 相关阅读:
    C++ 构造函数 explicit 关键字 成员初始化列表
    【车载以太网测试从入门到精通】——车载以太网休眠唤醒压力测试
    室内外无缝定位技术:连接虚拟与现实的新桥梁
    专业图标制作软件 Image2icon 最新中文 for mac
    MySQL数据库的SQL语句
    深入了解 npm
    lc marathon 6.30
    【Go】令牌桶限流算法
    使用 Spring Boot 构建 RESTful API 的最佳实践
    java计算机毕业设计留见二手书赠送网页系统源码+系统+数据库+lw文档+mybatis+运行部署
  • 原文地址:https://blog.csdn.net/weiisiceman/article/details/132950835