错误:十六进制逃逸序列超出范围



试图与字符串进行比较: BOOL r = [res isEqualToString:[@"x124Vxxc3xaa"]];

但是我得到了

错误:十六进制逃脱序列超出范围

我也尝试了类似的东西:

NSString *s = [@"x12" stringByAppendingString: @"4Vxxc3xaa"];
BOOL r = [res isEqualToString:s];

现在可以工作并返回YES

如何指定此类字符串并避免首先将它们分开?有点烦人...

更新:我使用 @rmaddy的代码,但是现在可以使用,如果我将其放在数组中,例如:

NSArray *answers = @[
                     @"",
                     @"#",
                     @"x12""4Vxxc3xaa",
                     ] 

它将为最后一个字符串产生警告:

串联的nsstring字面形式用于nsarray表达式 - 可能缺少逗号 如何摆脱它?

使用

NSString *s = @"x12""4Vxxc3xaa";
NSArray *arr = @[s];

可以工作,但我不想写更多的nsstring *s ...做。

的问题
BOOL r = [res isEqualToString:@"x124Vxxc3xaa"];

x124部分。看来您只能在00 -ff范围内具有HEX值。并注意沿字符串周围的 [ ]删除。

如果您不希望4被视为x HEX号码的一部分,则可以这样做:

BOOL r = [res isEqualToString:@"x12""4Vxxc3xaa"];

两个双引号字符确保x逃脱序列停止您需要的位置。

要在NSArray中使用此类字符串时消除可能缺少逗号的新警告,您将需要使用较旧的语法来创建数组:

NSArray *answers = [NSArray arrayWithObjects:
                     @"",
                     @"#",
                     @"x12""4Vxxc3xaa",
                     nil
                     ];