博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux中inet_aton的问题(IP转整数)
阅读量:6936 次
发布时间:2019-06-27

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

在网上看到一篇如下文章:

原题目是说的mysql的陷阱,但是仔细分析起来,应该是Linux,c在转换的时间的问题,不符合ip串转整形的通用算法,所以用c转的时候还需注意

 

linux C中有个函数inet_aton可以将IPv4的字符串地址(xxx.xxx.xxx.xxx)转换成网络地址结构体 struct in_addr。 

struct in_addr {

    unsigned long int s_addr;

}

当通过 inet_aton转化后,返回结果中的 in_addr.s_addr 是网络字节序的。如下图

 

 
 
 
 

“1.2.3.4”中的最高位“1”经过inet_aton转换后出现在最低的8bit中。

 

在mysql中也有inet_aton这个函数,也是将字符串IPv4地址转化成整形。但是经过转换后的4位整形却是主机字节序的。和linux的库函数正好相反。请看下图。

 

“1.2.3.4”的“1”在最高8bit中。可见,mysql的inet_aton转化后的结果正好和linux库函数相反。 

同样的 ,linux中,还有inet_ntoa,是将网络字节序的整形转化成字符串(“xxx.xxx.xxx.xxx")的IPv4地址。而mysql的inet_ntoa则是将主机字节序的整形转化成字符串。

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

你可能感兴趣的文章
一起学并发编程 - 简易线程池实现
查看>>
HTTP_HOST 和 SERVER_NAME 的区别
查看>>
【160天】尚学堂高琪Java300集视频精华笔记(129)
查看>>
【新技术】不用开发者账号申请ios证书真机调试
查看>>
再谈CVE-2017-7047 Triple_Fetch和iOS 10.3.2沙盒逃逸
查看>>
在vue.js中省市选择
查看>>
谈谈Spanner和F1
查看>>
Python图片爬取方法总结
查看>>
leetcode63. Unique Paths II
查看>>
优质的 Vue 开源项目 - 收藏集 - 掘金
查看>>
【翻译】关于回调地狱
查看>>
使用Gradle第一次构建Web应用
查看>>
html的嵌套规则
查看>>
神经病啊!——微信同层播放器接(踩)入(坑)总结
查看>>
详解Session
查看>>
CI类实现session基本用法
查看>>
Kubelet源码分析(一):启动流程分析
查看>>
Ktor 1.0发布:JetBrains推出的Kotlin Web框架
查看>>
杠上Spark、Flink?Kafka为何转型流数据平台
查看>>
Ruby 2.2.0发布,支持增量式垃圾收集和符号的垃圾收集
查看>>