前段时间有以需求你,为了实现高效率的地址查找以及比对,将ip地址转化为long型存入redis进行处理,并按照ip进行AB(根据ip的奇偶)对照。
然后先梳理一下转换的逻辑和一些基础知识。
/**
* 之前存储ip都是存字符串,没想过ip地址竟然还能存Long,于是测试了一下确实可以。
* 举个简单例子先,比如有个ip地址是169.254.85.85,
* 对应的二进制是10101001.11111110.1010101.1010101,将小数点去掉后变为101010011111111010101011010101,
* 可以看到除了最低的位置的整数位置没有发生变化,其他三个位置的整数分别相对原来的位置左移了8位,16位,24位,而在二进制中每左移一位,就相当于*2,
* 也就是说对应的每段数字分别乘2的8次方,16次方以及24次方,总体来说思路就是去掉ip地址的小数点后重新计算,
* 上面这个ip地址转化为long型整数是2852017493,
* 当然如果你觉得这样计算比较麻烦也可以通过将每段数字转化为十六进制后拼接,之后在计算器中直接转化为十进制效果是一样的,对应的十六进制是A9FE5555
*
*
* 基础运算知识:
* 运算符解释:
* (1)、“|”符号的含义就是将两个数字的二进制按右端对齐,只要有数字1就换1,当两个数字都是0才是0例如
* 示例:202(二进制:11001010)| 163(10100011)可以像下面这样看 ==