0

I have NSMutableData array of bytes. I need to find item and then delete it.

my code:

NSArray *array = [[tunerButtonHostInfo objectForKey:@"local"] objectForKey:@"snPacket"];
NSMutableData *asciiData = [[NSMutableData alloc] init];
[asciiData appendData [@"\x00\x00\x02\x00\x00\x0e"dataUsingEncoding:NSASCIIStringEncoding]];
if(array != nil && ![array isKindOfClass:[NSNull class]] && [array isKindOfClass:[NSArray class]]) {
    for(NSNumber *asciiCode in array) {
        int asc = [asciiCode intValue];
        if(asc == 0) {
            NSString *string = @"\x00"; dataUsingEncoding:NSASCIIStringEncoding]];
        }
        else {
            NSString *converted = [NSString stringWithFormat:@"%c", asc];
            [asciiData appendData:[converted dataUsingEncoding:NSUTF8StringEncoding]];
        }
    }

    NSLog(@"stringAsciiData");  //print asciiData 
    NSLog(@"%@", asciiData);

output of asciiData is:

00000200 000e6808 08680064 6c0b0367 6308c2b0 16

I need to find "c2" in the array and then remove it and shift remaining data in array to the left

Tim
  • 1

1 Answers1

0

Here is the modification to code to c2 . You can use append bytes method instead of converting to string and printing it back:


{
    NSArray *array = @[@68,@0x08,@0x08,@68,@00,@64,@0x6c,@0x0b,@03,@67,@63,@0x08,@0xc2,@0xb0,@16];
    NSMutableData *asciiData = [[NSMutableData alloc] init];
    [asciiData appendData:[@"\x00\x00\x02\x00\x00\x0e"dataUsingEncoding:NSASCIIStringEncoding]];
    if(array != nil && ![array isKindOfClass:[NSNull class]] && [array isKindOfClass:[NSArray class]]) {
        for(NSNumber *asciiCode in array) {
            Byte asc = [asciiCode intValue];
            if(asc == 0) {
                NSString *string = @"\x00";
                [asciiData appendData:[string dataUsingEncoding:NSASCIIStringEncoding]];
            }else if(asc != 0xc2) {
                [asciiData appendBytes:&asc length:1];
            }
        }
        NSLog(@"stringAsciiData");  //print asciiData
        NSLog(@"%@", asciiData);
    }
}
Raviprakash
  • 2,410
  • 6
  • 34
  • 56