最近,當我在一個虛擬機項目中工作時,我需要為我創建的每個虛擬機自動生成一個MAC地址。由于MAC地址為48位,格式是隔開的,所以我寫了一個c程序來自動生成MAC地址。
?
#define RANDOM(x) (rand()%x)
#define MAC_ADDR_LENGTH 12
#define FMT_MAC_ADDR_LEN (MAC_ADDR_LENGTH+5)
unsigned char HEXCHAR[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C',
'D','E','F'};
unsigned char genMACAddr[MAC_ADDR_LENGTH];
unsigned char fmtMACAddr[FMT_MAC_ADDR_LEN]={'0','0','-','0','0','-','0','0','-',
'0','0','-','0','0','-','0','0'};
void formatMACAddr()
{
? unsigned short i=0;
? unsigned short n=0;
? for(i=0;i<MAC_ADDR_LENGTH;i++,n++)
? {
??? if(fmtMACAddr[n]!='-')
??? {
????? fmtMACAddr[n]=genMACAddr[i];
??? }
??? else
??? {
????? n++;
????? fmtMACAddr[n]=genMACAddr[i];
??? }
? }
}
void main()
{
? unsigned short i=0;
? unsigned short n=0;
? srand(getpid());
? for(int i=0;i<MAC_ADDR_LENGTH;i++)
? {
??? n=RANDOM(16);
??? genMACAddr[i]=HEXCHAR[n];
? }
? formatMACAddr();
? printf("%s",fmtMACAddr);
}
以上就是關于如何通過C語言自動生成MAC地址的全部內容啦,不知你是否看懂,如有不清楚的地方,不妨來問問武林小編,我們會細心為您解答的。
新聞熱點
疑難解答
圖片精選