日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mac address 的一些操作

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mac address 的一些操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、如何描述 MAC地址

最常用的有兩種:

1、字符串

char *addr="52:54:00:29:e4:4b"; // 長度17,有效值都是16進制表示的

2、數組

/* 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庫函數,頭文件在 ctype.h,用來判斷傳入的字符是不是十六進制的字符。我們知道十六進制一般用數字 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地址表示方法的轉換

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)?把參數?str?所指向的字符串根據給定的?base?轉換為一個長整數

總結

以上是生活随笔為你收集整理的mac address 的一些操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。