c++獲取本機MAC並輸出爲string

#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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章