IP地址与Long型整数的相互转换
来源:互联网 发布:java工程师学什么专业 编辑:程序博客网 时间:2024/05/29 18:38
前段时间看概要设计文档发现有这么一段话,为了实现高效率的地址查找以及比对,将ip地址转化为long型存入redis进行处理balabala,具体是什么记不大清了大致就是这个意思。
之前没想过这个问题,ip地址竟然还能这么搞,于是测试了一下确实可以,举个简单例子先,比如有个ip地址是169.254.85.85,对应的二进制是10101001.11111110.1010101.1010101,将小数点去掉后变为101010011111111010101011010101,可以看到除了最低的位置的整数位置没有发生变化,其他三个位置的整数分别相对原来的位置左移了8位,16位,24位,而在二进制中每左移一位,就相当于*2,也就是说对应的每段数字分别乘2的8次方,16次方以及24次方,总体来说思路就是去掉ip地址的小数点后重新计算,上面这个ip地址转化为long型整数是2852017493,当然如果你觉得这样计算比较麻烦也可以通过将每段数字转化为十六进制后拼接,之后在计算器中直接转化为十进制效果是一样的,对应的十六进制是A9FE5555
好了明白了转化过程写代码就很简单了,直接上ip地址转化为long型整数的代码见下图
代码很简单这里就不用解释了。既然都写到这里了,那么整数转化为ip地址也是可以的,这里先上代码见下图
这里写了注释了就简单解释一下,思路就是取得每一段的数字,右移一位相当于除以2,通过将long型整数转化为二进制后与指定数量的f进行与运算,之后通过右移去掉不符合条件的位置保留所需的位置,最后用一个StringBuffer类的对象去拼接后转化为String即可。
最后写一下主方法进行一下简单测试,见下
运行后控制台输出符合预期,表示成功
- IP地址与Long型整数的相互转换
- IP地址与整数的相互转换
- ip地址与Long数值的相互转换
- ip地址与整数相互转换
- ip地址与整数相互转换
- JS中IP地址与整数的相互转换
- ip地址与Long型数据进行相互转换--->移位形式, 可能更好理解!
- IP地址与无符号整数值相互转换
- ip字符串与unsigned long 的相互转换
- IP地址与整数之间的转换
- IP地址与整数之间的转换
- IP地址与整数之间的转换
- IP地址与整数之间的转换
- 整数与IP地址间的转换
- ip地址与整数之间的转换
- 整数与IP地址间的转换
- ip地址与整数之间的转换
- 整数与ip地址之间的转换
- 算法设计与分析(屈婉玲)网络课学习笔记(一)
- JavaScript是如何实现继承的(六种方式)
- HDU-4476 Cut the rope (枚举、前缀和)
- 前端考试知识点归纳总结
- IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404
- IP地址与Long型整数的相互转换
- HDU
- Accelerated C++之计算学生成绩3
- JAVA学习笔记
- mysql 更改数据库字符编码的方法
- 开源分享-桌面版坦克大战
- ubuntu下安装pdo和pdo_mysql扩展
- [agc019c]Fountain Walk
- 第三单元man命令