关于GUID,全局唯一标识符

来源:互联网 发布:淘宝售后电话是多少 编辑:程序博客网 时间:2024/05/28 23:12

GUID 全称Globally Unique Identifier,即全局唯一标识符。也可以指UUID,UUID是University Unique Identifier的缩写。

GUID 是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个128 位( 16 字节)的二进制值。它保证对在同一时空中的所有机器都是唯一的,世界上的任何两台计算机都不会生成重复的GUID 值。

GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字,总共包含36个字符。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。


有了解具体生产原理的请说明,谢谢!!

Linux:使用uuid_generate函数(UUID)

//编译命令:gcc atemp.c -o atemp -luuid
#include <stdio.h>
#include <uuid/uuid.h>

int main() 

 uuid_t uu;
 int i;
 uuid_generate( uu );

 for(i=0;i<16;i++) 
 { 
  printf("%02X-",uu[i]); 
 } 
 printf("\n");

 return 0; 
}


Windows:使用CoCreateGuid函数(GUID)

#include <objbase.h>
#include <stdio.h>

#define GUID_LEN 64

int main(int argc, char* argv[])
{
 char buffer[GUID_LEN] = { 0 };
 GUID guid;

 if ( CoCreateGuid(&guid) )
 {
  fprintf(stderr, "create guid error\n");
  return -1;
 }
 _snprintf(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;
}



0 0
原创粉丝点击