国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
linux下將整型IPv4地址轉(zhuǎn)換成點(diǎn)分十進(jìn)制字符串的方法


今天看netfilter的源碼,發(fā)現(xiàn)一個打印點(diǎn)分十進(jìn)制的好方法:使用NIPQUAD和NIPQUAD_FMT宏:

#define NIPQUAD_FMT "%u.%u.%u.%u"#define NIPQUAD(addr) \ ((unsigned char *)&addr)[0],  ((unsigned char *)&addr)[1],  ((unsigned char *)&addr)[2],  ((unsigned char *)&addr)[3]

寫個測試代碼:

#include <stdio.h>#define NIPQUAD_FMT "%u.%u.%u.%u"#define NIPQUAD(addr) \ ((unsigned char *)&addr)[0],  ((unsigned char *)&addr)[1],  ((unsigned char *)&addr)[2],  ((unsigned char *)&addr)[3]int main() {    unsigned int ip;    ip = htonl(3232235777);    printf("ip = " NIPQUAD_FMT "\n", NIPQUAD(ip));}

輸出結(jié)果:

tony@ubuntu-a:~/code$ ./a.out ip = 192.168.1.1

這個用法要注意的就是,NIPQUAD的參數(shù)需要是網(wǎng)絡(luò)序的,所以事先用htonl轉(zhuǎn)一下就可以了。

另外還看到一種用法,就是使用%pI4打印地址:

sprintf(buffer, "%pI4", &ip);

網(wǎng)上是這樣說的:

The kernel's family of printf() functions has a special format specifier for IP-addresses (%pI4 for IPv4-addresses, %pI6 for IPv6).

也就是說這種格式僅供內(nèi)核來使用,一般用戶程序是不能用的。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
網(wǎng)絡(luò)字節(jié)序列 及 轉(zhuǎn)化函數(shù)
inet_pton()和inet_ntop()函數(shù)詳解
【C++】Winsock套接字編程,struct sockaddr、sockaddr
Socket理解之地址族
Linux Socket編程-基礎(chǔ)知識點(diǎn)
字符串轉(zhuǎn)換成地址
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服