全球唯一名称字符串,GUID的生成使用

2024-05-25 08:58

本文主要是介绍全球唯一名称字符串,GUID的生成使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在工作的文档中出现了随机因子(Random Factor),不是我们通常使用的随机数srand,它最大的作用是避免随机相同

1,涉及API及结构

使用CoCreateGuid 函数即可。需要 objbase.h头文件。

原型:
HRESULT CoCreateGuid(  GUID * pguid  
);  
其中GUID结构:
typedef struct _GUID {  unsigned long  Data1;  unsigned short Data2;  unsigned short Data3;  unsigned char  Data4[ 8 ];  
} GUID;  

总大小为:4 + 2 + 2 + 8 = 16字节。

一个GUID内容形式为:{77046E66-C274-42CE-85AD-5DCFA5B4D2A5}
就是4+2+2+2+6 = 16字节。

“85AD” 是 Data4[0]和Data4[1];

“5DCFA5B4D2A5” 则是从 Data4[2]~Data4[7]。

2,实现

代码如下:

#include "stdafx.h"  
#include "objbase.h"  
#include <string>  using namespace std;  std::string GuidToString(const GUID &guid)  
{  char buf[64] = {0};  sprintf_s(buf,sizeof(buf),"{%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]);  return std::string(buf);  
}  int _tmain(int argc, _TCHAR* argv[])  
{  GUID guid;  CoCreateGuid(&guid);  std::string s = GuidToString(guid);  printf(s.c_str());  printf("\n");system("pause");  return 0;  
}  

3,结果

{0259D93C-3CE8-4E14-A650-66A5390C9475}
请按任意键继续. . .

参考:https://blog.csdn.net/dpsying/article/details/21415811


补充

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;
}  

这篇关于全球唯一名称字符串,GUID的生成使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001047

相关文章

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Spring-AOP-ProceedingJoinPoint的使用详解

《Spring-AOP-ProceedingJoinPoint的使用详解》:本文主要介绍Spring-AOP-ProceedingJoinPoint的使用方式,具有很好的参考价值,希望对大家有所帮... 目录ProceedingJoinPoijsnt简介获取环绕通知方法的相关信息1.proceed()2.g

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

Java中使用注解校验手机号格式的详细指南

《Java中使用注解校验手机号格式的详细指南》在现代的Web应用开发中,数据校验是一个非常重要的环节,本文将详细介绍如何在Java中使用注解对手机号格式进行校验,感兴趣的小伙伴可以了解下... 目录1. 引言2. 数据校验的重要性3. Java中的数据校验框架4. 使用注解校验手机号格式4.1 @NotBl

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

Tomcat的下载安装与使用教程

《Tomcat的下载安装与使用教程》本文介绍了Tomcat的下载、安装和使用方法,包括在本机和云服务器上部署Tomcat的过程,以及解决启动失败问题的方法... 目录Tomcat的下载安装与使用Tomcat的下载与安装Tomcat在本机运行使用Tomcat在php云服务器上的使用总结Tomcat的下载安装与

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像