2012-09-04 4 views
7

iOS CoreBluetooth 프레임 워크로 128Bit을 만들려고했습니다.문자열로 128Bit UUID 만들기

내가 작성한 코드는 여기에 :

//16Bit Value-String 
static NSString * const [email protected]"FFC0"; 

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


//A Base UUID 
static NSString * const [email protected]"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
+1

[UUID가 (http://en.wikipedia.org/wiki/Universally_unique_identifier#Definition)는, 표준 형식뿐 아니라 HexText의 직선 문자열. – PenguinCoder

+0

블루투스베이스 UUID를 사용할 때도 같은 오류가 발생합니다. – nivek

+1

@nivek 그래서 "1813"과 같은 Base UUID를 사용할 때 어떻게이 문제를 해결 했습니까? 어쩌면 오래전일지도 모르지만 나는이 문제도 만난다. – Calios

답변

19

새로운 임의 UUID 만들려면 다음으로 링크 된 위키 피 디아 페이지에서 언급 한 바와 같이 8-4-4-4-12의 형태가

0C50D390-DC8E-436B-8AD0-A36D1B304B18 

당신은 그것을 볼 수 있습니다입니다 @PenguinCoder 너무.

작동이 형식의 문자열을 가진 CBUUID 만들기 :

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