GUID

本文介绍了GUID(全局唯一标识符)的概念及其在Windows编程中的应用。GUID是一种128位长的数字标识符,用于确保跨网络或多计算机系统的唯一性。文章通过一个C语言示例展示了如何生成GUID并将其转换为字符串形式。

最近看了一丢丢 windows核心编程,里面提到建议使用GUID的字符串形式作为对象名称使用,来确保

命名的唯一性。

于是查了查GUID:全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个4位十六进制数。

具体:

typedef struct _GUID {
  DWORD Data1;
  WORD  Data2;
  WORD  Data3;
  BYTE  Data4[8];
} GUID;
这是MSDN里的,然后在我的电脑里的定义是

typedef struct _GUID {
  unsigned long Data1;
  unsigned short Data2;
  unsigned short  Data3;
  unsigned char Data4[8];
} GUID;

用起来

#include <stdio.h> 
#include <objbase.h> 
#define GUID_LEN 64  
    
int main()  
{  
    char buffer[GUID_LEN] = { 0 };  
    GUID guid;  
    
    if (CoCreateGuid(&guid))  
    {  
        fprintf(stderr, "create guid error\n");  
        return -1;  
    }  
    sprintf_s(buffer, sizeof(buffer),  
        "%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X",  
        guid.Data1, guid.Data2, guid.Data3,  
        guid.Data4[0], guid.Data4[1], guid.Data4[2],  
        guid.Data4[3], guid.Data4[4], guid.Data4[5],  
        guid.Data4[6], guid.Data4[7]);  
    printf("guid: %s\n", buffer);  
    return 0;  
}

其中,%08X的意思是,%X表示以十六进制输出;08表示不足8位,前面以0填充,超过8位的话,没有影响。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值