8

iOSCoreBluetoothフレームワークで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ビットですが、なぜこのエラーが発生するのですか?

4

1 に答える 1

22

コマンドラインで次のように入力uuidgenして、新しいランダムなuuidを作成します。

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

@PenguinCoderによってリンクされているウィキペディアのページでも言及されているように、8-4-4-4-12の形式であることがわかります。

CBUUIDこの形式の文字列を使用してを作成すると、次のように機能します。

CBUUID *uuid = [CBUUID UUIDWithString:@"0C50D390-DC8E-436B-8AD0-A36D1B304B18"];
于 2012-09-18T18:23:03.153 に答える