Я занимаюсь строковыми манипуляциями с использованием высокоуровневых функций Какао, таких как NSString
и NSData
, а не копаюсь до вещей уровня C, таких как работа с массивами char
s.
Ради всего этого, +[NSString stringWithUTF8String:]
иногда возвращает nil
на очень хорошей строке, которая была создана с помощью -[NSString UTF8String]
. Можно предположить, что это происходит, когда вход искажен. Вот пример неудачного ввода в шестнадцатеричном формате:
55 6B 66 51 35 59 4A 5C 6A 60 40 33 5F 45 58 60 9D 47 3F 6E 5E
60 59 34 58 68 41 4B 61 4E 3F 41 46 00
и ASCII:
UkfQ5YJ\j`@3_EX`G?n^`Y4XhAKaN?AF
Это случайно сгенерированная строка для проверки моей подпрограммы.
char * buffer = [randomNSString UTF8String];
// .... doing things .... in the end, buffer is the same as before
NSString * result = [NSString stringWithUTF8String:buffer];
// yields nil
Редактировать: На всякий случай, если кто-то не понял неявный вопрос, он находится в режиме -v:
Почему [NSString stringWithUTF8String:] иногда возвращает nil
для идеально сформированной строки UTF8?