查找项目,然后将其删除到NSMutableData数组中

时间:2018-06-21 09:15:11

标签: objective-c arrays byte nsmutablearray nsmutabledata

我有NSMutableData字节数组。我需要找到然后删除它。

我的代码:

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

asciiData的输出是:

  

00000200 000e6808 08680064 6c0b0367 6308c2b0 16

我需要在数组中找到“ c2” ,然后将其删除并将数组中的剩余数据向左移动

1 个答案:

答案 0 :(得分:0)

这是对代码c2的修改。您可以使用附加字节方法,而不是转换为字符串并重新打印回去:


{
    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);
    }
}