0
我有一堆数据在下面列出的格式,我需要从2位十六进制转换为其各自的整数值。有什么我可以指定给NSScanner,一次只需要2个字符进行转换。或者我是否需要手动断开字符串(例如“D8”“BE”...)或将其重新格式化以包含NSScanner将理解的分隔符(例如@“D8 BE 98 31 BC 96 17 EB 29 54”?NSScanner是否可以通过一定数量的字符进行解析?
注:这是什么,我试图做的(它不工作)
NSString *fakeData = [[NSString alloc] initWithString:@"D8BE9831BC9617EB2954"];
NSScanner *responseScanner = [NSScanner scannerWithString:fakeData];
unsigned int intValue;
while([responseScanner isAtEnd] == NO) {
[responseScanner scanHexInt:&intValue];
NSLog(@"HEX : %d", intValue);
}
这样一个例子:将一个答案(这工作)
NSString *fakeData = [[NSString alloc] initWithString:@"D8 BE 98 31 BC 96 17 EB 29 54"];
NSScanner *responseScanner = [NSScanner scannerWithString:fakeData];
unsigned int intValue;
while([responseScanner isAtEnd] == NO) {
[responseScanner scanHexInt:&intValue];
NSLog(@"HEX : %d", intValue);
}
EDIT_001
非常感谢你的头像NSScanner肯定是非常有用的,只是一个耻辱,你不能指定多少位数组成你想要抓取的十六进制数。
NSString *fakeData = [[NSString alloc] initWithString:@"D8BE9831BC9617EB2954"];
unsigned int intValue;
for(unsigned int location=0; location<[fakeData length]-1; location+=2) {
NSString *subString = [fakeData substringWithRange:NSMakeRange(location, 2)];
NSScanner *scanner = [NSScanner scannerWithString:subString];
[scanner scanHexInt:&intValue];
NSLog(@"LOCATION(%d) = %d", location, intValue);
}
[fakeData release];
加里