运维开发网

怎么通过C语言自动生成MAC地址

运维开发网 https://www.qedev.com 2020-02-18 14:24 出处:网络 作者: 网络整理
以下是对使用C语言自动生成MAC地址的实现代码进行了详细的分析介绍,需要的朋友可以过来参考下

最近在做虚拟机项目时,需要给创建的每一个虚拟机自动生成一个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);

}

0

精彩评论

暂无评论...
验证码 换一张
取 消