首先了解一下sscanf的語法規則:
1.將mac位址按照其格式進行輸出:
允許輸入一位數的數字或者字母,最終為了顯示美觀,將字母變成大寫,一位數變成兩位數字進行輸出,即用%2x格式輸出。
2.取出mac位址中的數字進行儲存,因為mac位址一共有12位數,因此乙個位元組存不下,需要使用兩個位元組進行儲存。將sscanf得到的陣列進行移位運算,儲存完整的mac位址。
**如下:
//gcc 5.4.0
#include int main(void)
; sscanf(f, "%02x:%02x:%02x:%02x:%02x:%02x", &mac[0], &mac[1], &mac[2],
&mac[3], &mac[4], &mac[5]);
printf("%02x:%02x:%02x:%02x:%02x:%02x\n",mac[0], mac[1], mac[2],
mac[3], mac[4], mac[5]);
u32high = ((mac[0] & 0x000000ff) <<24) | ((mac[1] & 0x000000ff) <<16) |
((mac[2] & 0x000000ff) << 8) | (mac[3] & 0x000000ff);
u32low = ((mac[4] & 0x000000ff) << 8) | (mac[5] & 0x000000ff);
printf("%x\n%x\n",u32high,u32low);
return 0;
}
這樣就可以實現用sscanf輸出指定mac位址格式的陣列啦,最後用兩個位元組進行儲存mac位址。 獲取指定網絡卡的MAC位址
由於終端裝置多網絡卡使用的問題,以前使用netbios 獲取網絡卡mac位址的方法可能導致不可靠的問題。現推薦大家使用如下方法實現 cstring getlicense cstring strmac cstring getmacbyname cstring strname strcat szfile...
linux 獲取本地mac位址 指定網絡卡
獲取本地mac std string getlocalmac memset ifr mac,0,sizeof ifr mac strncpy ifr mac.ifr name,eth0 sizeof ifr mac.ifr name 1 if ioctl sock mac,siocgifhwaddr...
獲取指定IP的終端的MAC位址
因為業務需要,需要給公司部分終端進行登記,以保證授權終端能夠登入業務系統,最好的方法就是記錄下每台終端的mac位址來進行驗證是否有授權。dllimport iphlpapi.dll public static extern int sendarp int32 dest,int32 host,ref ...