2016-11-29 3 views
2

Попытки сравнить строку: BOOL r = [res isEqualToString:[@"\x124Vx\xc3\xaa"]];ошибка: шестигранная последовательность выхода из диапазона

Однако я получил

error: hex escape sequence out of range

Я попробовал также что-то вроде:

NSString *s = [@"\x12" stringByAppendingString: @"4Vx\xc3\xaa"]; 
BOOL r = [res isEqualToString:s]; 

Теперь он мог работа и возврат YES

Как я могу указать такая строка и избегать их расщепления в первую очередь? Это вид раздражает ...

UPDATE: Я использую @ код rmaddy, и он работает в настоящее время, однако, если я ставлю его в массиве как:

NSArray *answers = @[ 
        @"", 
        @"#", 
        @"\x12""4Vx\xc3\xaa", 
        ] 

Он будет генерировать предупреждение для последняя строка символов:

Concatenated NSString literal for an NSArray expression - possibly missing a comma How to get rid of it?

Использование

NSString *s = @"\x12""4Vx\xc3\xaa"; 
NSArray *arr = @[s]; 

Может работать, но я предпочитаю не писать больше NSString * s ... для этого.

+0

Related: Http: // StackOverflow. ком/вопросы/5784969/когда-так-с-компиляторы-запуск с учетом-более-чем-два-гекс-цифры-в-струнной-лайт. –

ответ

3

Проблема:

BOOL r = [res isEqualToString:@"\x124Vx\xc3\xaa"]; 

это с \x124 части. Кажется, вы можете иметь только шестнадцатеричные значения в диапазоне 00 - ff. Обратите внимание на удаление [ ] вокруг строки.

Если вы не хотите 4 считаться частью \x шестнадцатеричное число, вы можете сделать это:

BOOL r = [res isEqualToString:@"\x12""4Vx\xc3\xaa"]; 

две двойные кавычки символы обеспечивают последовательность \x побега прекращается, когда вам это нужно к.

Чтобы устранить новое предупреждение о возможной отсутствующей запятой при использовании такой строки в NSArray, вам нужно будет использовать старый синтаксис для создания массива:

NSArray *answers = [NSArray arrayWithObjects: 
        @"", 
        @"#", 
        @"\x12""4Vx\xc3\xaa", 
        nil 
        ]; 
+0

Спасибо! Ваш код выполнил задание, но он также содержит предупреждение: «Конкатенированный литерал NSString для выражения NSArray - возможно, отсутствует запятая, есть ли способ избавиться от него? – Wingzero

+0

ok, я нашел причину, я поместил строковый литерал в массив, поэтому он дает это предупреждение. например '@ [@" 1 ", @" \ x12 "" 4Vx \ xc3 \ xaa "]' – Wingzero

+0

На самом деле я не заметил '[]' вокруг строки. Да, это нужно. – rmaddy

Смежные вопросы