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];
加里