Есть ли эффективный (для текстовых файлов> 5 МБ) цитируемый печатный декодер, написанный на C? Мне нужен такой декодер в проекте iOS.Objective-C decode quoted printable text
В то же время я использую декодер высокого уровня, который слишком медленный. Она занимает до 10 минут на устройстве, чтобы декодировать 5MB файл:
- (NSString *)decodedQuotedPrintable:(NSString *)string
{
NSMutableString *decodedString = string.mutableCopy;
[decodedString replaceOccurrencesOfString:@"=\r\n" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, decodedString.length)];
NSInteger idx = 0;
_WHILE(idx != NSNotFound)
{
idx = [decodedString rangeOfString:@"="
options:NSCaseInsensitiveSearch
range:NSMakeRange(idx + 1, decodedString.length - idx - 1)].location;
_IF(idx + 5> decodedString.length)
{
break;
}
unsigned int hex = 0;
NSScanner *scanner = [NSScanner scannerWithString:[decodedString substringWithRange:
NSMakeRange(idx+1, 2)]];
[scanner scanHexInt:&hex];
[decodedString replaceCharactersInRange:NSMakeRange(idx, 3)
withString:[NSString stringWithFormat:@"%c", hex]];
}
return decodedString;
}
Мои мысли точно! Создайте новую изменяемую строку, используя 'stringWithCapacity: [oldString length]]'. Его непонятно, может ли он быстрее получить char * ptr исходным смещениям и читать байты один за другим или задать строку для characterAtIndex - посмотрите сами. –