跨平台生成GUID/UUID

#ifndef XGUID_H
#define XGUID_H

#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 XGUID
{
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);
}

std::string CreateGuidString()
{
    return GuidToString(CreateGuid());
}

}//namespace

#endif // XGUID_H

eg:

QString str1(XGUID::CreateGuidString().c_str());

http://blog.csdn.net/itjobtxq/article/details/8224676

时间: 06-08

跨平台生成GUID/UUID的相关文章

php中生成标准uuid(guid)的方法

<?phpUUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台 会提供生成UUID的API.UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数字.由以 下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相 同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一

loadrunner生成随机uuid的方法

在globals.h中定义方法: char* lr_guid_gen(char* paramName){ //生成GUID方法 typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; } GUID; GUID m_guid; char buf[50]; char pNameStr[50]; CoCreateGuid(&m_guid

JavaScript生成GUID的方法

一.生成GUID的方法一 JScript 代码   复制 function guid() { function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); } return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4()); } 二.生成GUID的方法二 JSc

Javascript生成GUID

GUID(全球唯一标识)是微软使用的一个术语,由一个特定的算法,给某一个实体,如Word文档,创建一个唯一的标识,GUID值就是这个唯一的标识码.除了.Net有专门的方法生成外,JS也可以生成GUID,一般有两种方式,分别是 方法一: //JS生成GUID函数,类似.net中的NewID(); function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); } function NewGuid()

SSIS Package重新生成GUID

Package有一个标识ID,这个ID是GUID,如果通过一个已经存在的Package复制一个Package,那么这两个Package的Name和GUID是相同的,可以在Properties中Identification 目录中重新生成GUID,并重命名Name属性. Differentiating Package Copies Log data includes the name and the GUID of the package to which the log entries belo

原生JavaScript生成GUID的实现

GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数字.GUID的唯一缺陷在于生成的结果串会比较大. GUID的格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 大家都知道GUID在前端开发中用处不大,但如果需要插入某个ID,并且这个ID与后台对应等其它需要GUID的操作时,为了方便,我们还是可以生成一个GUID

VS中生成GUID的方法

GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.它使用网卡MAC.地址.纳秒级时间.芯片ID码和许多可能的数字,这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机.GUID长什么样呢? {C7B1AFCC-810E-46d0-8157-09FC488D4C71}     看起来挺古怪的吧.在 Windows 平台上,GUID 应用非常广泛:注册表.类及接口标识.数据库.甚至自动生成的机器名.目录名等.不用担心GUID的性能

sqlserver 生成guid以及一些字串操作

--生成guid () 去掉‘-’并转成小写 declare @guid varchar(50) select @guid = NEWID() select len(@guid) select REPLACE(@guid,'-','') select len( REPLACE(@guid,'-',''))

通过JavaScript生成GUID

function newGuid(){ var guid = ""; for (var i = 1; i <= 32; i++){ var n = Math.floor(Math.random()*16.0).toString(16); guid += n; if((i==8)||(i==12)||(i==16)||(i==20)) guid += "-"; } return guid; } 通过JavaScript生成GUID