博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在字符串形式的IP和整数形式的IP之间转换呢?
阅读量:2221 次
发布时间:2019-05-08

本文共 865 字,大约阅读时间需要 2 分钟。

如何在字符串形式的IP和整数形式的IP之间转换呢?

问题解决思路:

有三个函数可以解决这个问题,当然不止这三个函数,只是这三个函数最常用且最易混淆。

隆重推出他们:inet_network(), inet_addr(), inet_aton()!!

三者定义:

int inet_aton(const char *cp, struct in_addr *inp);

in_addr_t inet_addr(const char *cp);

in_addr_t inet_network(const char *cp);

三者区别:

先说出区别吧,不卖关子。但其实这样不好,因为我怕你因为知道了结论而不去动手实践了。(你不会的,是吧? ^_^)

纸上得来终觉浅,绝知此事要躬行。

inet_addr和inet_network函数都是用于将字符串形式转换为整数形式用的,两者区别很小,inet_addr返回的整数形式是网络字节序,而inet_network返回的整数形式是主机字节序。(你一定会纳闷,为什么函数叫inet_network,却返回的是主机字节序,呵呵,就是这么奇怪,你又有什么办法呢…)其他地方两者并无二异。他俩都有一个小缺陷,那就是当IP是255.255.255.255时,这两个“小子”(对这两个函数的昵称,请谅解…^_^)会认为这是个无效的IP地址,这是历史遗留问题,其实在目前大部分的路由器上,这个255.255.255.255的IP都是有效的。

inet_aton函数和上面这俩小子的区别就是在于他认为255.255.255.255是有效的,他不会冤枉这个看似特殊的IP地址。所以我们建议你多多支持这个函数,那两个小子还是少用为好:)对了,inet_aton函数返回的是网络字节序的IP地址。

好了,区别就这么简单,只要你能潜下心来看五分钟,就OK了。哦,忘了,什么叫网络字节序,什么叫主机字节序?这两个概念,如果你不太了解,你最好去找一本socket编程的书籍看一看,我保证没有5分钟,你就会了解这两个概念。

转载地址:http://oenfb.baihongyu.com/

你可能感兴趣的文章
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
机器学习算法应用中常用技巧-2
查看>>
通过一个kaggle实例学习解决机器学习问题
查看>>
决策树的python实现
查看>>
Sklearn 快速入门
查看>>
了解 Sklearn 的数据集
查看>>
用ARIMA模型做需求预测
查看>>
推荐系统
查看>>
TensorFlow-11-策略网络
查看>>
浅谈 GBDT
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>