2016-04-11 7 views
0

я иметь NSString с шестнадцатеричным значениемIOS-гекс добавление

NSString* someString = @"AAB827EB5A6E225CAA 

я хочу, чтобы извлечь из б (второй полукокса) до 2 (-5 полукокса)

сделать добавление всего добываемого полукокса и я должен найти 5С в качестве результата (-4 и -3 обугленного)

Я попытался это:

NSMutableArray *hex = [[NSMutableArray alloc]init]; 
     unichar firstChar = [[someString uppercaseString] characterAtIndex:0]; 
     unichar seconChar = [[someString uppercaseString] characterAtIndex:1]; 
     unichar lastChar = [[someString uppercaseString] characterAtIndex:[print length]-1]; 
     unichar beforeLastChar = [[someString uppercaseString] characterAtIndex:[print length]-2]; 

     if (firstChar == 'A' && seconChar == 'A' && lastChar =='A' && beforeLastChar=='A') { 



      for (int i=2;i< [print length]-4; i++) { 
       NSString *decim =[NSString stringWithFormat:@"%hu",[someString characterAtIndex:i]]; 
       [hex addObject:decim]; 
      } 
       NSLog(@"hex : %@",hex); 
} 

но журнал

гекс: ( 98, 56, 50, 55, 101, 98, 53, 97, 54, 101, 50, 50,)

Я попытался скрыть его до строки, затем int для вычисления, но если я могу избежать преобразования и продолжить с hex, я бы предпочел

спасибо за помощь

ответ

1

Код может быть, вероятно, еще более упрощенный, но одна возможность:

NSString *someString = @"AAB827EB5A6E225CAA"; 

// I have improved a bit your check for prefix and suffix 
if ([someString hasPrefix:@"AA"] && [someString hasSuffix:@"AA"]) { 
    NSMutableArray *hexNumbers = [[NSMutableArray alloc] init]; 

    for (int i = 2; i < [someString length] - 4; i++) { 
     unichar digit = [someString characterAtIndex:i]; 

     NSUInteger value; 

     // we have to convert the character into its numeric value 
     // we could also use NSScanner for it but this is a simple way 
     if (digit >= 'A') { 
      value = digit - 'A' + 10; 
     } else { 
      value = digit - '0'; 
     } 

     // add the value to the array 
     [hexNumbers addObject:@(value)]; 
    } 

    NSLog(@"hex : %@", hexNumbers); 

    // a trick to get the sum of an array 
    NSNumber *sum = [hexNumbers valueForKeyPath:@"@sum.self"]; 

    // print the sum in decadic and in hexadecimal 
    NSLog(@"Sum: %@, in hexa: %X", sum, [sum integerValue]); 
} 
+0

отлично работает спасибо – Ogyme