挿入と選択の効率を確保するために、128 ビットの UUID を 16 バイトの stringに保存します。これは、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];