您的位置:首页 > 运维架构 > Linux

UUID/GUID的生成封装(Win32/Linux)

2015-02-06 02:14 267 查看
#include <string>

#include <stdio.h>

#ifdef WIN32

#include <objbase.h>

#else

#include <uuid/uuid.h>

typedef struct _GUID

{

unsigned long Data1;

unsigned short Data2;

unsigned short Data3;

unsigned char Data4[8];

} GUID, UUID;

#endif

namespace ChinuxTeam

{

GUID CreateGuid()

{

GUID guid;

#ifdef WIN32

CoCreateGuid(&guid);

#else

uuid_generate(reinterpret_cast<unsigned char *>(&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);

}

}

编译时,WIN32下链接ole32, Linux下链接libuuid

http://www.qtcn.org/blog/blog.php?do-showone-itemid-1245-type-blog.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: