MAC地址是無線網絡中很重要的概念,在界面設計中,如果我們要顯示不同的客戶端,MAC將是一個很重要的顯示參數。今天我們來講一講如何在Qt中隨機產生一組MAC地址,並將其顯示在界面上。當然實際生活中,我們需要讀取MAC地址來顯示,這裏只是爲了測試顯示功能,因此在系統中隨機生成了MAC地址。
MAC地址是由一組十六進制的數字和短線“-”組成的。我們的方法是,先定義一個存儲了這16個符號的char類型的數組,然後定義一個char類型的MACAddr變量用來從符號數組中隨機選取不同位置的符號,最後在加上短線即可。
具體代碼如下:
//mainwindow.h
char HEXCHAR[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};//符號數組
char genMACAddr[MAC_ADDR_LENGTH];//隨機產生的一組16進制數
char fmtMACAddr[FMT_MAC_ADDR_LEN]={'0','0','-','0','0','-','0','0','-','0','0','-','0','0','-','0','0','\0'};//最終存放MAC地址的字符串
void GENMACADDR();//生成MAC地址的函數
void formatMACAddr();//子函數
//mainwindow.cc
void MainWindow::GENMACADDR()
{
int n = 0;
for(int i = 0; i < MAC_ADDR_LENGTH; i++){
n = qrand()%16;
genMACAddr[i] = HEXCHAR[n];
}
formatMACAddr();
}
void MainWindow::formatMACAddr()
{
unsigned short i = 0;
unsigned short n = 0;
//QString mac_string[50] ="";
for(i = 0; i < MAC_ADDR_LENGTH;i++,n++){
if(fmtMACAddr[n]!='-')
{
fmtMACAddr[n] = genMACAddr[i];
}
else{
n++;
fmtMACAddr[n] = genMACAddr[i];
}
}
}
//使用的地方:
for(int i = 0; i<10; i++)
{
//qsrand(time(NULL));//如果用時間作爲種子,由於程序運行太快,時間基本不變,所以最終產生的多個MAC地址是一樣的。因此改爲使用i。
qsrand(i);
GENMACADDR();
QString string(fmtMACAddr);
label_ap_sta_mac[i] = new QLabel(string);
}
最終結果如下圖所示: