#include <string>
#include <Windows.h>
#include <iphlpapi.h>
/** 其他頭文件自行添加 **/
/**
省略部分……
**/
void getMAC()//用NetAPI來獲取網卡MAC地址
{
IP_ADAPTER_INFO adapter[5]; //Maximum 5 adapters
DWORD buflen=sizeof(adapter);
DWORD status=GetAdaptersInfo(adapter,&buflen);
BYTE s[6];
if(status==ERROR_SUCCESS)
{
PIP_ADAPTER_INFO painfo=adapter;
memcpy(s,painfo->Address,6);
printf("Physical Address:%02X-%02X-%02X-%02X-%02X-%02X\n",s[0],s[1],s[2],s[3],s[4],s[5]);
}
string strMAC="";
for(int i=0;i<sizeof(s);i++)
{
int f = (s[i])/16; //取除數(前面一位)
int l = (s[i])%(16); //取模(後面一位)
//前面一位轉char
if(f>=0&&f<=9) {f+=48;} //數字轉ASCII
else if( f>=97&&f<=122) {f=f+87;} //小寫字母轉ASCII
else {f=f+55;} //大寫字母轉ASCII
char fChar = (char)f; //ASCII碼轉爲char類型
string fStr;
fStr.push_back(fChar);
//printf("first char ---------:%s\n",fStr);
//後面一位轉char
if(l>=0&&l<=9) {l+=48;}
else if( l>=97&&l<=122) {l=l+87;}
else {l=l+55;}
char lChar = (char)l;
string lStr;
lStr.push_back(lChar);
//兩位char合併爲一個字符串
//printf("last char ---------:%s\n",lStr);
if(i==(sizeof(s)-1)){
strMAC +=fStr+lStr;
}else{
strMAC +=fStr+lStr+"-";
}
}
cout<<"-----------"+strMAC+"-----------"<<endl;
}