使用Objective C将UUID转换为十六进制表示

时间:2014-01-09 23:53:51

标签: objective-c cocoa

我有一个UUID,如68753A44-4D6F-1226-9C60-0050E4C00067,需要转换为0xD7,0x36,0x95,0x0A,0x4D,0x6E,0x12,0x26,0x80,0x3A,0x00,0x50,0xE4 ,0xC0,0x00,0x67。

有人可以让我知道如何做可可或目标C

非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:0)

使用CFUUIDCreateFromString()将字符串转换为CFUUIDRef,然后使用CFUUIDGetUUIDBytes()获取原始字节。

答案 1 :(得分:0)

以下代码帮助我解决了这个问题。

NSString *str3 = @"16433D43-C5DC-43A8-A35D-3F27ECCACFDC";
NSData* data = [str3 dataUsingEncoding:NSUTF8StringEncoding];

NSMutableString *hex = [NSMutableString string];
unsigned char *bytes = (unsigned char *)[data bytes];
char temp[3];
int i = 0;
for (i = 0; i < [data length]; i++) {
    temp[0] = temp[1] = temp[2] = 0;
    (void)sprintf(temp, "%02x", bytes[i]);
    [hex appendString:[NSString stringWithUTF8String: temp]];
}
NSLog(@"Hex %@",hex);

输出将是这样的事情:33343445323944452D333946352D343941372D414543312D453539423130443444413836