三九宝宝网宝宝百科宝宝知识

如何快速生成 UUID GUID

01月09日 编辑 39baobao.com

[2011年12月大学英语四级估分对的题数有快速阅读5 6听力选择12]4、6级算分都不是实际分数,而是按照几所著名高校的成绩选取一个模态分值,转换成计算公式,一般来讲,按照标答算分百分制的52--58之间都有可能通过,只是难度大的分低也过,难度小的分...+阅读

通用的GUID的结构如下 typedef struct _GUID { DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; } GUID; 举一个例子: 假设一个GUID的格式是这样的 6B29FC40-CA47-1067-B31D-00DD010662DA 其中Data1 是32位,可以看做8个四位十六进制数,对应于上面的6B29FC40 其中Data2 是16位,可以看做4个四位十六进制数,对应于上面的CA47 其中Data3 是16位,可以看做4个四位十六进制数,对应于上面的1067 其中Data4 比较特殊,是8个字节也就可以看做16个四位十六进制数 取其Data4[0],Data4[1]来组成4个四位十六进制数,对应于上面的B31D 取其Data4[2],Data4[3]来组成4个四位十六进制数,对应于上面的00DD 取其Data4[4],Data4[5]来组成4个四位十六进制数,对应于上面的0106 取其Data4[6],Data4[7]来组成4个四位十六进制数,对应于上面的62DA *注意:四位十六进制数对应一个GUID字符。

在Windows下提供了一个函数可以生成一个GUID。需要使用的头文件 "objbase.h",需要链接的库ole32.lib。 HRESULT CoCreateGuid(GUID * pguid); 在Linux下首先需要下载到相应的库文件和头文件 如果是Debian用户可以方便的通过apt命令来获取相关资源。 apt-get install uuid-dev 安装完成后会发现 在/usr/include/ 下有一个uuid文件夹,其中则包含了uuid.h头文件。 在/usr/lib/ 下有几个libuuid*的链接库文件,包括静态和动态链接库。

打开uuid.h你会发现有一个uuid_generate(uuid_t out) 的函数声明。我们可以通过调用这个函数来生成UUID。 uuid_generate(reinterpret_cast(&guid)); 生成GUID是不是很简单!是的,因为生成的算法不用我们去实现,我们是站在前人的肩膀所以我们要感谢他们。 下面给出一个WINDOWS和LINUX下通用的程序。 // uuid_test.cpp #include #include #include #include "uuid_test.hpp" #ifdef WIN32 #include #else #include #endif using namespace std; namespace ChinuxTeam { GUID CreateGuid() { GUID guid; #ifdef WIN32 CoCreateGuid(&guid); #else uuid_generate(reinterpret_cast(&guid)); #endif return guid; } std::string GuidToString(const GUID &guid) { char buf[64] = {0}; #ifdef __GNUC__ snprintf( #else // MSVC _snprintf_s( #endif 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); } } 对应的头文件 // uuid_test.hpp" #include #include #include typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; } GUID, UUID; namespace ChinuxTeam { GUID CreateGuid(); std::string GuidToString(const GUID &guid); }// namespace ChinuxTeam 最后一个 GuidToString()稍微解释一下,作用就是把GUID以固定的格式输出到标准string字符串中, 根据编译器的不同调用分别调用了不同的字符串打印函数。

另外附一个简单的测试函数 #include #include #include #ifdef WIN32 #include "objbase.h" #else typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; } GUID, UUID; #endif namespace ChinuxTeam{ GUID CreateGuid(); std::string GuidToString(const GUID &guid); } 运行后会生成一个GUID并打印到标准输出的控制台上。

以下为关联文档:

魔兽世界烹饪怎么能快速练习BL 首先在澳门口的飞艇点附近打野猪暴大块野猪肉(联盟可以在埃尔问森林达野猪或狼),大概可以一直练到70左右,这时先去练习下钓鱼。很多部落战场排队的时候都在门口练钓鱼,所以很...

大专生考研究生成功率大吗首先,只要你有学位,符合大专生报名条件,那么考研的成功与否就跟你是否是大专没有其他必然的联系。 第二,符合条件就可以考,可以考就意味着你有成功的可能。 第三,我不知道你是想考...

教师在课堂上如何处理生成性教学资源小学科学学习强调以探究为核心,科学探究离不开师生、生生互动、生本互动,然而,由于价值多元化的存在,在师生和生生互动中自然而然就会产生各种各样的生成性问题。面对这些问题,教...

怎样轻松快速的学好英语口语首先、确定你自己的英语水平。中国大学毕业生的通病是,书面阅读还可以,口语不行,听力很差,书写凑合。但每个人具体情况又都不一样,有人阅读专业书一目十行,但读报纸很费劲。有人听...

怎样快速学好英语口语快速学习英语的方法有很多种。最主要是你得努力学,外加勤奋和练习,最好是一对一的和英语特别棒的人交流。一定要是英语特好的人,如果你和菜鸟交流,只会让你变的更菜了,俗话说近朱...

怎样快速学习英语口语这段时间,我最困惑的问题就是我的英语口语问题,公司今年派我去学习一年时间,听了本来是一件很 好的事,但是我怎么也高兴不起来,我的英语还不错,但就是口语说不出来,在家吧你要说还...

如何在Excel表格中自动生成序号大徐哥的方法普遍适用,但是存在一个问题 如果中间有一行带序号的给删除了的话,那就不得不重新填充了 用这个方法: 序列: 1、 2、 3、 4、5…… 确定开始行是第N行,则在第N行输入:=...

excel里怎样生成自动编写序号1,首先打开Excel 2007,创建如图所示的内容。当然也可以根据自己的实际情况来选择练习的内容。在此为了讲解上的需要,特制作两列,第一列就“序号”,第二列是“名称”。2,然后依次在...

卡布西游怎么快速生级卡布西游怎么快速升级?就让豆腐君来告诉大家这个心得吧!快速升级有两个概念,一个是妖怪快速升级,另外一个则是角色快速升级!妖怪快速升级步骤一:用贝贝分配历练第一步是要用大量的...

推荐阅读
图文推荐