2013-12-09 1 views
0

블루투스 저에너지 애플리케이션에 문제가 있습니다. NSString을 NSData로 변환하는 방법

나는 다음과 같은 데이터를 읽어
NSLog("%@", characteristic.value); //<06000800 10001700>   
NSString *rawData = [NSString stringWithFormat:@"%@", characteristic.value]; 
     rawData = [rawData stringByReplacingOccurrencesOfString:@" " withString:@""]; 
     rawData = [rawData stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
     rawData = [rawData stringByReplacingOccurrencesOfString:@">" withString:@""]; 
     NSMutableArray *splitData = [[NSMutableArray alloc] init]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(0, 2)]]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(2, 2)]]; 
     [data replaceObjectAtIndex:3 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:0], [splitData objectAtIndex:1]]]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(4, 2)]]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(6, 2)]]; 
     [data replaceObjectAtIndex:4 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:2], [splitData objectAtIndex:3]]]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(8, 2)]]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(10, 2)]]; 
     [data replaceObjectAtIndex:5 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:4], [splitData objectAtIndex:5]]]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(12, 2)]]; 
     [splitData addObject:[rawData substringWithRange:NSMakeRange(14, 2)]]; 
     [data replaceObjectAtIndex:6 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:6], [splitData objectAtIndex:7]]]; 

은 그 때 나는 4 개 개의 시간 값을 얻을 : "6시", "8시", "10시", "17시". 거기에 더 좋은 방법이 있지만 그게 내 질문이 아니라는 것을 알고 있습니다. 그것은 매우 빨리 끝내야했습니다.

하지만 시간 값을 NSData 객체로 다시 변환 할 때 많은 문제가 있습니다. 나는 거의 성공하지 못한 채로 내 마음에 온 모든 것을 시도했다. 내가 원한 값인 <06000800 10001700>처럼 보이는 NSData 객체가 필요하다. @"0600080010001700" 자릿수를 포함하는 NSString이 있습니다. 다음에 무엇을해야합니까?

도움이된다면, 다음에해야 할 일이 전혀 없습니다.

+0

문자열은 어떻게 작성 되었습니까? 원래 문자열이 이상적인 방법으로 생성되지 않은 것 같습니다. – rmaddy

+0

블루투스 장치가 값을 저장하는 방식을 바꿀 수 없기 때문에 내가 가지고있는 것으로 작업해야합니다. 시간 값이 앱에로드 된 후 필자는 @ "hh : mm"과 같은 텍스트 필드에 값을 저장하는 피커 뷰로 변경할 수 있습니다. 사용자가 시간 지정을 마친 후에는 텍스트 필드를 읽고 콜론을 제거한 다음 원래 특성의 값과 같은 모양의 문자열로 병합합니다. – daydr3amer

답변