IP和字符串的相互转换
本文最后更新于:2023年5月15日 下午
来源
本文出自:MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换
写法
仔细想想,IPv4
的每一部分其实都是0~255
的取值,也就是8 bit
的大小,如果转换成整型那么就只需要32 bit
即4
个字节的大小。
而转换的方法也是顺着这个思路,先把字符串以.
为分隔符分成四部分,再把这四部分进行位操作后加起来,就能得到整型的IPv4
地址了。
1 |
|
那么转换回去的思路也大差不差,先用位操作得到四个部分,再进行转型和字符串合并。
1 |
|
比较尴尬的是java
没有无符号整型,只好直接使用长整型来存储了(不觉得另一种意义上的十分浪费吗.jpg)。
写在最后
原文中提到MySQL
中是自带相应函数来把字符串格式的IP转换成整数的INET_ATON
和IP转换成字符串的INET_NTOA
的,还有适应IPv6
的INET6_ATON
和INET6_NTOA
,之后可以学习一下。
希望本文章能够帮到您~
IP和字符串的相互转换
https://map1e-g.github.io/2023/05/15/ip2str/