如何生成限制为8个字符长度的UUID

时间:2015-03-19 05:19:12

标签: ios objective-c

我的问题是我想生成随机唯一标识符,这对于运行我的同一个应用程序的两个设备应该不相同。并且在同一设备中它不应该产生重复的标识符。所以我想要的是设备特定号码+唯一标识符(这样我可以轻松地识别具有服务器上的设备的特定用户)。目前我正在使用以下代码。但它非常冗长。我希望标识符仅限于8个字符。

+ (NSString *)uuid
{
    CFUUIDRef uuidRef = CFUUIDCreate(NULL);
    CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
    CFRelease(uuidRef);
    return (__bridge_transfer NSString *)uuidStringRef;
}

9FCAFBEC-04CA-4F78-B417-BB051EEC9888

2 个答案:

答案 0 :(得分:4)

听起来你根本不需要UUID,你只需要一个随机数。幸运的是,由于您只需要8个字符(= 4个十六进制字节),您可以使用系统函数arc4random轻松生成此字符:

NSString * str = [NSString stringWithFormat:@"%08X", arc4random());

UUID是具有特定长度的通用唯一ID的特殊格式(总是128位,或32个十六进制字符加连字符)。当然,你可以将UUID字符串截断为8个字符,但这是不可取的,因为它们具有内部格式(某些子字符串不会像其他字符串那样随机)并且你不会以无偏见结束随机性。

答案 1 :(得分:1)

我认为如果您正在查看特定于设备应用的ID,那么您应该查看供应商ID。

已经回答here

相关问题