Objective c 使用字符串创建128位UUID

Objective c 使用字符串创建128位UUID,objective-c,bluetooth,uuid,energy,Objective C,Bluetooth,Uuid,Energy,我试着用iOS CoreBooth框架创建一个128位的 我编写的代码如下: //16Bit Value-String static NSString * const ADVERTISING_SERVICE_16=@"FFC0"; //Var for 128Bit String static NSString * ADVERTISING_SERVICE; //A Base UUID static NSString * const BASE_UUID=@"0405060708090A0B0

我试着用iOS CoreBooth框架创建一个128位的

我编写的代码如下:

//16Bit Value-String
static NSString * const ADVERTISING_SERVICE_16=@"FFC0";

//Var for 128Bit String
static NSString * ADVERTISING_SERVICE;


//A Base UUID 
static NSString * const BASE_UUID=@"0405060708090A0B0C0D0E0F";

+ (NSString*) get128BitUUID:(NSString*)uuid{
    return [[NSString alloc] initWithFormat:@"0000%@%@",uuid,BASE_UUID];
}

ADVERTISING_SERVICE = [UUIDFuncs get128BitUUID:ADVERTISING_SERVICE_16];
现在,当我尝试用这个获取UUID时:

if([service.UUID isEqual:[CBUUID UUIDWithString:ADVERTISING_SERVICE] ]){
    [peripheral discoverCharacteristics:nil forService:service];
}
我收到以下错误消息:

2012-09-04 14:18:06.127 blukiiFirmwareTest[3154:707] *** Terminating app due to uncaught
exception 'Invalid UUID string', reason: 'String 0000FFC00405060708090A0B0C0D0E0F 
does not represent a valid UUID'

我不明白为什么;字符串是一个16字节长的UUID,这是128位,为什么会出现此错误?

在命令行上键入
uuidgen
创建一个新的随机UUID:

0C50D390-DC8E-436B-8AD0-A36D1B304B18
你会看到它是由@PenguinCoder链接的维基百科页面中提到的8-4-4-4-12的形式

使用此格式的字符串创建
CBUUID
,可以:

CBUUID *uuid = [CBUUID UUIDWithString:@"0C50D390-DC8E-436B-8AD0-A36D1B304B18"];

是一种标准格式,而不仅仅是一个十六进制文本字符串。当我使用蓝牙基本UUID时也会出现同样的错误。@nivek那么,当使用基本UUID(如“1813”)时,您是如何解决这个问题的呢?也许这真的是很久以前的事了,但我也遇到了这个问题。你说的“1813”是什么意思?我使用蓝牙标准中的蓝牙基础uuid解决了这个问题。因此,当您使用此[CBUUID UUID WithString:@“1813”]时,您将获得蓝牙基本UUID+自定义的16位UUID,并将其作为UUID字符串放在正确的位置。