我想将一个 128 位的 UUID 保存到一个 16 字节的字符串中,它将作为我的 ManagedObject 的索引属性存储在 Core Data 中,以确保插入和选择效率。
有没有办法将 128 位 UUID 存储到 16 字节的 ASCII 字符串中?如果有,如何在 32 字节 UUID 字符串和 16 字节 ASCII 字符串之间进行转换?
我尝试使用下面的代码将 CFUUIDBytes 存储到字符串中,但是在生成字符串后值发生了变化。(如果任何字节值 > 127,则其值在生成的字符串中发生变化)
CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
CFUUIDBytes uuidBytes = CFUUIDGetUUIDBytes(uuidRef);
NSString *utf8String = [NSString stringWithFormat:@"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
uuidBytes.byte0, uuidBytes.byte1, uuidBytes.byte2,
uuidBytes.byte3, uuidBytes.byte4, uuidBytes.byte5,
uuidBytes.byte6, uuidBytes.byte7, uuidBytes.byte8,
uuidBytes.byte9, uuidBytes.byte10, uuidBytes.byte11,
uuidBytes.byte12, uuidBytes.byte13, uuidBytes.byte14,
uuidBytes.byte15];