uuid (c++ 实现)

本文深入探讨了UUID的含义及其在分布式计算环境中的应用。详细介绍了UUID生成的标准过程,包括如何利用以太网卡地址、纳秒级时间、芯片ID码等信息确保唯一性,并通过代码示例展示了在Linux环境下生成UUID的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。

      UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字

通用的GUID的结构如下

 typedef struct _GUID {

  DWORD Data1;
  WORD Data2;
  WORD Data3;
  BYTE Data4[8];
} GUID,UUID;


Linux:使用uuid_generate函数  (g++ -luuid)

可以通过man uuid 查看

void uuid_generate(uuid_t out);
void uuid_generate_random(uuid_t
 out);
void uuid_generate_time(uuid_t
 out);



string uuid_gen_test()
{
UUID uuid;
//The UUID is 16 bytes (128 bits) long
uuid_generate(reinterpret_cast<unsigned char *>(&uuid));
char buf[64] = {0};
snprintf(buf,
sizeof(buf),
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
uuid.data1, uuid.data2, uuid.data3, 
uuid.data4[0], uuid.data4[1],uuid.data4[2],uuid.data4[3],
uuid.data4[4],uuid.data4[5],uuid.data4[6],uuid.data4[7]);
return string(buf);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值