Search code examples
iphoneobjective-carraysnsdata

NSString to NSData conversion Problem


I have some Bytes of image in my string and i want to draw it to UIImageView ...Here is my code

NSString* str= @"<89504e47 0d0a1a0a 0000000d 49484452 ........... 454e44ae 426082>";
    NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding]; 
    NSLog(@"My NSDATA  %@",data);
    imageView.image=[UIImage imageWithData:data];

Now when i saw that printed data on console it is not in same format what i gave to that string..The output is something like.....

<3c383935 30346534 37203064 30613161..........

So my imageview show nothing..... please help


Solution

  • if question was: How to convert string data to image then this is answer.

    NSData *imgData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"]];
    // set your string data into inputString var
    NSString *inputString = [imgData description];
    NSLog(@"input string  %@",inputString);
    // clearing string from trashes
    NSString *dataStr = [inputString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    // separate by words of 4 bytes
    NSArray *words = [dataStr componentsSeparatedByString:@" "];
    // calculate number of bytes
    NSArray *sizes = [words valueForKey:@"length"];
    int sizeOfBytes = 0;
    for (NSNumber *size in sizes) {
        sizeOfBytes += [size intValue]/2;
    }
    int bytes[sizeOfBytes];
    int counts = 0;
    for (NSString *word in words) {
        // convert each word from string to int
        NSMutableString *ostr = [NSMutableString stringWithCapacity:[word length]];
        while ([word length] > 0) {
            [ostr appendFormat:@"%@", [word substringFromIndex:[word length] - 2]];
            word = [word substringToIndex:[word length] - 2];
        }
    
        NSScanner *scaner = [NSScanner scannerWithString:ostr];
        unsigned int val;
        [scaner scanHexInt:&val];
        bytes[counts] = val;
        counts++;
    }
    // get NSData form c array
    NSData* data = [NSData dataWithBytes:bytes length:sizeOfBytes];
    NSLog(@"My NSDATA  %@",data);
    // your image is ready
    UIImage *image = [UIImage imageWithData:data];
    NSLog(@"image: %@",image);