Linux下利用C/C++语言生成uuid

Windows下称为guid,Linux下作为uuid,生成唯一值,可将这种方法用作数据库,作为数据库主键的值。


方法一:利用随机数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
 * Create random UUID
 *
 * @param buf - buffer to be filled with the uuid string
 */

char *random_uuid( char buf[37] )
{
    const char *c = "89ab";
    char *p = buf;
    int n;
    for( n = 0; n < 16; ++n )
    {
        int b = rand()%255;
        switch( n )
        {
            case 6:
                sprintf(p, "4%x", b%15 );
            break;
            case 8:
                sprintf(p, "%c%x", c[rand()%strlen(c)], b%15 );
            break;
            default:
                sprintf(p, "%02x", b);
            break;
        }
 
        p += 2;
        switch( n )
        {
            case 3:
            case 5:
            case 7:
            case 9:
                *p++ = '-';
                break;
        }
    }
    *p = 0;
    return buf;
}
 
void main()
{
    char guid[37];
    random_uuid(guid);
    printf("guid = %s\n", guid);
    random_uuid(guid);
    printf("guid = %s\n", guid);
    random_uuid(guid);
    printf("guid = %s\n", guid);
    random_uuid(guid);
    printf("guid = %s\n", guid);
}
 

  运行如下:
daniel@debian:~/src$ gcc getuuid.c
daniel@debian:~/src$ ./a.out
guid = a397a255-53be-41fc-996b-521413e9e22d
guid = 518e1f56-0857-49a7-a5d0-528277751b99
guid = 4aed583d-6a52-49d5-b668-8ead955f3c35
guid = b5c48cdd-6c11-453d-91b4-59cfce233d27


方法二:/*libuuid是一个用于生成UUID的C库,具体用法参考http://linux.die.net/man/3/libuuid,在Ubuntu中,可以用下面的命令安装libuuid:
sudo apt-get install uuid-dev

示例如下:*/


#include <stdio.h>
#include <uuid/uuid.h>
int main(int argc, char **argv)
{
    uuid_t uuid;
    char str[36];
 
    uuid_generate(uuid);
    uuid_unparse(uuid, str);
 
    printf("%s\n", str);
 
    return 0;
}
在Linux下编译时需要链接uuid库
gcc -o uuid uuid.c -luuid

  

方式三:利用C++进行封装

参考地址


猜你喜欢

转载自blog.csdn.net/Brouce__Lee/article/details/81479397
今日推荐