ip

本文介绍了一种将IP地址从点分十进制形式转换为长整型数值的方法,并提供了Java实现示例。此外,还展示了如何逆向操作,将长整型数值转回点分十进制形式的IP地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package ip;

public class Ip
{
	/**
	 * 将127.0.0.1形式的ip地址转换成10进制整数,这里没有进行任何错误处理
	 * 
	 * @author ZengWenfeng
	 * @date 2016.07.04
	 * @param strip
	 * @return
	 */
	private static long ipToLong(String strip)
	{
		long[] ip = new long[4];
		int position1 = strip.indexOf(".");
		int position2 = strip.indexOf(".", position1 + 1);
		int position3 = strip.indexOf(".", position2 + 1);
		
		ip[0] = Long.parseLong(strip.substring(0, position1));
		ip[1] = Long.parseLong(strip.substring(position1 + 1, position2));
		ip[2] = Long.parseLong(strip.substring(position2 + 1, position3));
		ip[3] = Long.parseLong(strip.substring(position3 + 1));
		
		return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];// ip1*256*256*256+ip2*256*256+ip3*256+ip4
	}

	/**
	 * 将10进制整数形式转换成127.0.0.1形式的ip地址,在命令提示符下输入ping3396362403l
	 * 
	 * @author ZengWenfeng
	 * @date 2016.07.04
	 * @param longip
	 * @return
	 */
	private static String longToIp(long longip)
	{
		StringBuffer sb = new StringBuffer("");
		
		sb.append(String.valueOf(longip >>> 24));// 直接右移24位
		sb.append(".");
		sb.append(String.valueOf((longip & 0x00ffffff) >>> 16));// 将高8位置0,然后右移16位
		sb.append(".");
		sb.append(String.valueOf((longip & 0x0000ffff) >>> 8));
		sb.append(".");
		sb.append(String.valueOf(longip & 0x000000ff));
//		sb.append(".");
		
		return sb.toString();
	}

	/**
	 * 仅仅测试
	 * 
	 * @author ZengWenfeng
	 * @date 2016.07.04
	 * @param args
	 */
	public static void main(String[] args)
	{
		System.out.println("ip地址的各种表现形式:rn");
		System.out.print("32位二进制形式:");
		System.out.println(Long.toBinaryString(3396362403l));
		System.out.print("十进制形式:");
		System.out.println(ipToLong("202.112.96.163"));
		System.out.print("普通形式:");
		System.out.println(longToIp(3396362403l));
	}
}


可能真的记不清楚了。或许就是没掌握。我看到这里想起,印象里IP分类,按高位0  10  100 分为A B C D类。



后来百度了一下:

http://blog.youkuaiyun.com/panjunnn/article/details/5653388/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spencer_tseng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值