Search code examples
cocoa-touchencodingbluetoothnsstringnsdata

How do I get my NSString converted into a NSData


I'm having trouble with my Bluetooth Low Energy Application.

I read the Data out like this:

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]]];

Then I get four time values: "06:00", "08:00", "10:00", "17:00". I know there are MUCH better ways to do it, but thats not my question here. It had to be done very quickly.

But I'm facing a lot of trouble when converting the time values back into a NSData object. I have tried everything that came to my mind without even nearly being successful. What I need is a NSData object which looks like the original value <06000800 10001700>. I have a NSString which contains the digits @"0600080010001700". What do I do next?

Any help is appreciated, I really have no clue what to do next.


Solution

  • I've found my solution. Has taken quite a while but now it's working.

    Converting HEX NSString To NSData