美文网首页
类似UUID的随机字符

类似UUID的随机字符

作者: LLL_0901 | 来源:发表于2016-05-03 15:29 被阅读292次

.h

+(NSString *)getUUID;


.m

//当前时间(毫秒级)+随机数和打乱的字符串 进行洗牌(洗牌算法)

+(NSString *)getUUID{

NSString* date;

NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];

[formatter setDateFormat:@"YYYYMMddhhmmssSSS"];

date = [formatter stringFromDate:[NSDate date]];

NSString *  timeNow = [[NSString alloc] initWithFormat:@"%@", date];

int x = (arc4random() % 1001) + 8999;

NSString *alphabet = @"ABCDEFGHIJK";

// Get the characters into a C array for efficient shuffling

NSUInteger numberOfCharacters = [alphabet length];

unichar *characters = calloc(numberOfCharacters, sizeof(unichar));

[alphabet getCharacters:characters range:NSMakeRange(0, numberOfCharacters)];

// Perform a Fisher-Yates shuffle

for (NSUInteger i = 0; i < numberOfCharacters; ++i) {

NSUInteger j = (arc4random_uniform(numberOfCharacters - i) + i);

unichar c = characters[i];

characters[i] = characters[j];

characters[j] = c;

}

NSString *result = [NSString stringWithCharacters:characters length:numberOfCharacters];

free(characters);

NSString *UDID = [NSString stringWithFormat:@"%@%d%@",timeNow,x,result];

NSString *alphabet1 = UDID;

// Get the characters into a C array for efficient shuffling

NSUInteger numberOfCharacters1 = [alphabet1 length];

unichar *characters1 = calloc(numberOfCharacters1, sizeof(unichar));

[alphabet1 getCharacters:characters1 range:NSMakeRange(0, numberOfCharacters1)];

// Perform a Fisher-Yates shuffle

for (NSUInteger i = 0; i < numberOfCharacters1; ++i) {

NSUInteger j = (arc4random_uniform(numberOfCharacters1 - i) + i);

unichar c = characters1[i];

characters1[i] = characters1[j];

characters1[j] = c;

}

NSString *UUID = [NSString stringWithCharacters:characters1 length:numberOfCharacters1];

free(characters1);

NSMutableString *uuid2 = [[NSMutableString alloc] initWithString:UUID];

[uuid2 insertString:@"-" atIndex:8];

[uuid2 insertString:@"-" atIndex:13];

[uuid2 insertString:@"-" atIndex:18];

[uuid2 insertString:@"-" atIndex:23];

return uuid2;

}

//这个想法不是很严谨,不能完全的保证唯一性。

//在数据量不是特别大或者特定情况下可以当做唯一标示符使用。

相关文章

  • 类似UUID的随机字符

    .h +(NSString *)getUUID; .m //当前时间(毫秒级)+随机数和打乱的字符串 进行洗牌(洗...

  • php使用md5生成随机字符串

    有时候我们常需要生成一些固定长度的随机字符串,比如uuid,随机字符串等 生成36位uuid 生成随机32位字符串...

  • 生成随机数

    生成随机数,应用于类似生成上传图片名称 function uuid() { var s = []; var h...

  • 066 Python语法之uuid

    Python3 uuid 使用经验 Python中没有基于DCE的,uuid2可以忽略 uuid4基于随机数存在概...

  • 分布式唯一id(uuid,雪花算法对比)

    UUID UUID总长度 36,由 32 个 16 进制字符和 4 个连字符组成。连字符仅用于增加可读性,实际的精...

  • swift 随机uuid

  • UUID使用方法

    UUID使用方法 结果 str字符串说明: 结果: UUID是128位的全局唯一标识符,通常由32字节的字符串表示...

  • nodejs实现随机uuid

    UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长。比如:29be34ed...

  • Qt 杂录

    UUID MD5 随机数 Qt5.10后推荐使用 QRandomGenerator 生成随机数,而不再推荐qran...

  • Bash命令行生成随机密码

    利用/dev/urandom生产随机字符 利用openssl生产随机字符

网友评论

      本文标题:类似UUID的随机字符

      本文链接:https://www.haomeiwen.com/subject/actrrttx.html