尝试与字符串进行比较:
TIFF* img = TIFFOpen("1.tif", "r");
uint32 length;
TIFFGetField(img, TIFFTAG_IMAGELENGTH, &length);
但是我得到了
错误:十六进制转义序列超出范围
我也尝试了类似的事情:
BOOL r = [res isEqualToString:[@"\x124Vx\xc3\xaa"]];
现在它可以工作并返回NSString *s = [@"\x12" stringByAppendingString: @"4Vx\xc3\xaa"];
BOOL r = [res isEqualToString:s];
如何指定此类字符串并避免先将其拆分?这有点烦人......
更新的: 我使用@ rmaddy的代码,现在它可以工作,但是,如果我把它放在数组中,如:
YES
它将为最后一个字符串文字生成警告:
NSArray表达式的连接NSString文字 - 可能缺少逗号 如何摆脱它?
使用
NSArray *answers = @[
@"",
@"#",
@"\x12""4Vx\xc3\xaa",
]
可以工作,但我不想写更多的NSString * s ......来做。
答案 0 :(得分: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
];