mac address 的一些操作
生活随笔
收集整理的這篇文章主要介紹了
mac address 的一些操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、如何描述 MAC地址
最常用的有兩種:
1、字符串
char *addr="52:54:00:29:e4:4b"; // 長度17,有效值都是16進制表示的2、數(shù)組
/* MAC Address */ typedef struct {uint8_t b[6]; } __attribute__((packed)) macaddr_t;2、如何檢測輸入的mac地址是有效的?
// 這里參考了bluez的源碼int mac_check(const char *str) {if (!str)return -1;if (strlen(str) != 17)return -1;while (*str) {if (!isxdigit(*str++))return -1;if (!isxdigit(*str++))return -1;if (*str == 0)break;if (*str++ != ':')return -1;}return 0; }注 :int isxdigit(int c); 是一個標準C庫函數(shù),頭文件在 ctype.h,用來判斷傳入的字符是不是十六進制的字符。我們知道十六進制一般用數(shù)字 0 到 9 和字母 A 到 F(或 a~f)表示,其中 A~F 表示 10~15:?0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F。如果不是,isxdigit 返回0。
3、兩種MAC地址表示方法的轉(zhuǎn)換
int ba2str(const macaddr_t *ba, char *str) {return sprintf(str, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",ba->b[5], ba->b[4], ba->b[3], ba->b[2], ba->b[1], ba->b[0]); }int str2ba(const char *str, macaddr_t *ba) {int i;if (mac_check(str) < 0) {memset(ba, 0, sizeof(*ba));return -1;}for (i = 5; i >= 0; i--, str += 3)ba->b[i] = strtol(str, NULL, 16);return 0; }?long int strtol(const char *str, char **endptr, int base)?把參數(shù)?str?所指向的字符串根據(jù)給定的?base?轉(zhuǎn)換為一個長整數(shù)
總結(jié)
以上是生活随笔為你收集整理的mac address 的一些操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20164324王启元 Exp4恶意代码
- 下一篇: linux火狐中设置中文,Ubuntu火