publicstaticlongip2Long(String ipString){// 取 ip 的各段String[] ipSlices = ipString.split("\\.");long rs =0;for(String i:ipSlices){
rs=Long.parseLong(i)| rs<<8L;}return rs;}publicstaticStringlong2Ip(long ipLong){String[] ipString =newString[4];for(int i =0; i <4; i++){// 每 8 位为一段,这里取当前要处理的最高位的位置int pos = i *8;// 取当前处理的 ip 段的值long and = ipLong &(255<< pos);// 将当前 ip 段转换为 0 ~ 255 的数字,注意这里必须使用无符号右移
ipString[3-i]=String.valueOf(and >>> pos);}returnString.join(".", ipString);}
Python 版本
import struct
import socket
import os
deflong2Ip(int_ip):
ip = socket.inet_ntoa(struct.pack('I', socket.htonl(int_ip)))return ip
defip2long(string_ip):return struct.unpack("!L", socket.inet_aton(string_ip))[0]
scala 版本 def ip2Int(ipString: String): Int = { // 取 ip 的各段 val ipSlices = ipString.split("\\.") var rs = 0 for (i <- 0 until ipSlices.length) { // 将 ip 的每一段解析为 int,并根据位置左移 8 位 val intSlice = ipSlices(i).toInt << 8 * i //