4
我使用的功能,看看目标C从iOS设备上的WiFi点获取MAC地址,并没有看到零地址
BSSID = "d4:ca:6d:d4:e:89"; SSID = "ExtremeFitness_FreeInternet"; SSIDDATA = <45787472 656d6546 69746e65 73735f46 72656549 6e746572 6e6574>;
但来自WiFi指针D4 MAC地址:CA:6D:D4: 0E:后89
,我比较与数据库中的MAC地址当前的WiFi BSSID,比较的NSString
,为什么我不能在这个代码中看到的0?
+(NSString *) getMac{
CFArrayRef myArray = CNCopySupportedInterfaces();
CFDictionaryRef captiveNetWork = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
//NSLog(@"Connected at : %@", captiveNetWork);
NSDictionary *myDictionnary = (__bridge NSDictionary *)captiveNetWork;
NSString *bssid = [myDictionnary objectForKey:@"BSSID"];
if (bssid.length == 0) {
return @"";
}
return bssid;
}
-(void)compareMacAddress{
for (int i = 0; i < _clubs.count; i ++) {
NSString *macFromClub = [[NSString stringWithFormat:@"%@", _clubs[i][@"mac"]] lowercaseString];
NSLog(@"%@", _clubs[i]);
EFMacAddressUtil *macUtil = [[EFMacAddressUtil alloc] init];
NSLog(@"%@", [[macUtil getMac] lowercaseString]);
NSRange range = [macFromClub rangeOfString:[[macUtil getMac] lowercaseString]];
if (range.length > 0) {
[_clubInfo setObject:_clubs[i][@"address"] forKey:@"address"];
[_clubInfo setObject:_clubs[i][@"id"] forKey:@"id"];
[_clubInfo setObject:_clubs[i][@"ip"] forKey:@"ip"];
[_clubInfo setObject:_clubs[i][@"mac"] forKey:@"mac"];
_inClub = true;
[_mainOfficeTableView reloadData];
break;
}else{
_inClub = false;
[_mainOfficeTableView reloadData];
}
}
}
IM不知道为什么会发生这种情况,但我猜测它只是将这些值解释为普通的旧十六进制,而0e与e完全相同,所以如果缺少数字,您可以编写一个小函数来插入0。除非有人提出实际的答案 – Fonix 2015-01-21 03:26:09
正如@Fonix所说,0e和e在数值上是等价的。看起来,Captive Network框架内的代码在转换为十六进制字符串时不会添加前导0。 – Paulw11 2015-01-21 03:29:32