Как преобразовать двоичные данные в шестнадцатеричное значение в obj-c?Пример:
1111 = F,
1110 = E,
0001 = 1,
0011 = 3.
У меня есть NSString 10010101010011110110110011010111, и я хочу преобразовать его в шестнадцатеричное значение.В данный момент делаю вручную.Что,
-(NSString*)convertToHex:(NSString*)hexString
{NSMutableString * convertingString = [[NSMutableString alloc] init];
for (int x = 0; x < ([hexString length]/4); x++) {
int a = 0;
int b = 0;
int c = 0;
int d = 0;
NSString *A = [NSString stringWithFormat:@"%c", [hexString characterAtIndex:(x)]];
NSString *B = [NSString stringWithFormat:@"%c", [hexString characterAtIndex:(x*4+1)]];
NSString *C = [NSString stringWithFormat:@"%c", [hexString characterAtIndex:(x*4+2)]];
NSString *D = [NSString stringWithFormat:@"%c", [hexString characterAtIndex:(x*4+3)]];
if ([A isEqualToString:@"1"]) { a = 8;}
if ([B isEqualToString:@"1"]) { b = 4;}
if ([C isEqualToString:@"1"]) { c = 2;}
if ([D isEqualToString:@"1"]) { d = 1;}
int total = a + b + c + d;
if (total < 10) { [convertingString appendFormat:@"%i",total]; }
else if (total == 10) { [convertingString appendString:@"A"]; }
else if (total == 11) { [convertingString appendString:@"B"]; }
else if (total == 12) { [convertingString appendString:@"C"]; }
else if (total == 13) { [convertingString appendString:@"D"]; }
else if (total == 14) { [convertingString appendString:@"E"]; }
else if (total == 15) { [convertingString appendString:@"F"]; }
}
NSString *convertedHexString = convertingString;
return [convertedHexString autorelease];
[convertingString release];
}
У кого-нибудь есть предложения лучше?Это занимает слишком много времени.Заранее спасибо.