我正在使用CWNetwork獲取接口的mac(hw)地址。現在OS X以xx:xx:xx:xx:xx:xx格式給我這個mac地址。但是如果第一個數字是0,OS X將輸出地址爲4:aa:dd:ee:34:40,而不是04:aa:dd:ee:34:40。以正確的格式顯示mac地址
現在我試圖在顯示它之前將字符串4:aa:dd:ee:34:40並將其轉換爲04:aa:dd:ee:34:40。 任何想法? APpreciate幫助。
我正在使用CWNetwork獲取接口的mac(hw)地址。現在OS X以xx:xx:xx:xx:xx:xx格式給我這個mac地址。但是如果第一個數字是0,OS X將輸出地址爲4:aa:dd:ee:34:40,而不是04:aa:dd:ee:34:40。以正確的格式顯示mac地址
現在我試圖在顯示它之前將字符串4:aa:dd:ee:34:40並將其轉換爲04:aa:dd:ee:34:40。 任何想法? APpreciate幫助。
我相信下面的代碼是做你想做的。
NSString *macAddress = @"4:aa:dd:ee:34:40";
NSScanner *scanner = [NSScanner scannerWithString:macAddress];
[scanner setCharactersToBeSkipped:[NSCharacterSet punctuationCharacterSet]];
NSMutableString *result = [NSMutableString stringWithCapacity:[macAddress length]];
while (![scanner isAtEnd]) {
unsigned theValue;
if ([scanner scanHexInt:&theValue]) {
[result appendFormat:@":%02x",theValue];
} else {
[result appendString:@":??"];
}
}
NSLog(@"%@",[result substringFromIndex:1]);
你不是自己調用ether_ntoa(3),是嗎?我似乎記得,ether_ntoa是通常的罪魁禍首,喜歡從MAC地址的每個八位組中刪除前導零。
你能得到MAC地址的原始字節(如sockaddr_dl-> sdl_data,而不是預格式化的字符串),然後用你自己的printf樣式格式字符串按照你想要的格式進行格式化嗎?像「%02x:%02x:%02x:%02x:%02x:%02x」可能就是你想要的。
謝謝艾薩克。 NSScanner和scanHexInt方法是我所需要的。 – cocoacoder 2010-03-18 22:44:13