最近在做虚拟机项目时,需要给创建的每一个虚拟机自动生成一个MAC地址,由于MAC地址为48位,而且格式是以:隔开的,所以下面我写了一个c程序,来自动生成MAC地址。
复制代码 代码如下:// MAC.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<unistd.h>#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);}
精彩评论