IP和长整型互换

该博客介绍了如何在Java中实现IP地址(如126.56.78.59)与长整型之间的转换。`ipToLong`方法通过左移运算将IP地址的各部分转换为长整型,而`longToIP`方法则通过右移和与运算将长整型转换回IP地址字符串。这两个方法对于网络编程和数据存储很有用。
摘要由CSDN通过智能技术生成

IP和长整型互换
 * 
 *
 */
public class IPUtil {
    public static void main(String[]args){
        String ip="126.56.78.59";
        long ipLong=ipToLong(ip);
        System.out.println(ipLong);
        System.out.println(longToIP(ipLong));
        
    }
    /**
     * 将127.0.0.1形式的IP地址转换成十进制整数  这里没有进行任何错误处理
     * 通过左移操作(<<)给每一段数字加权 第一段的权为2的24次方 第二段的权为2的16次方
     * 第三段的权为2 的8次方 最后一段权为1
     */
    public static long ipToLong(String ipadress){
        long[]ip=new long[4];
        //先找到IP地址字符串中 . 的位置
        int position1=ipaddress.indexOf(".");
        int position2=ipaddress.indexOf(".",position1+1);
        int position3=ipaddress.indexOf(".",position2+1);
        //将每个 . 之间的字符串转换为整型 
        ip[0]=Long.parseLong(ipadress, substring(0,position1));
        ip[1] = Long.parseLong(ipaddress.substring(position1 + 1, position2));
        ip[2] = Long.parseLong(ipaddress.substring(position2 + 1, position3));
        ip[1] = Long.parseLong(ipaddress.substring(position3 + 1));
        return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];
        
    }
/**
 * 将十进制整数形式转换为127.0.0.1形式的IP地址 将整数值进行右移操作(>>)右移24位,右移时高位补0,得到的数字即为第一段IP。
 * 通过&操作符 将整数值的高位设为0,再右移16位 得到的数字即为第二段ip
 * 通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
                    通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
                    
 */
    public static String longToLong(long ipaddress){
        StringBuffer sb=new StringBuffer("");
        //直接右移24位
        sb.append(String.valueOf((ipaddress>>>24)));
        sb.append(".");
        //将高8位置0 然后右移16位
        sb.append(String.valueOf((ipaddress&0x00FFFFFF)>>>16));
        sb.append(".");
        //将高16 位置0 然后右移8位
        sb.append(String.valueOf((ipaddress&0x0000FFFF)>>>8));
        sb.append(".");
        //将高24位置0
        sb.append(String.valueOf((ipaddress & 0x000000FF)));
        return sb.toString();
        
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值