源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java实现ip地址与十进制数相互转换

  • 时间:2022-12-23 01:36 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java实现ip地址与十进制数相互转换
先看实例 代码如下
[u]复制代码[/u] 代码如下:
classip { privatestaticlongiptolong(stringstrip) //将127.0.0.1形式的ip地址转换成10进制整数,这里没有进行任何错误处理 { intj=0; inti=0; long[]ip=newlong[4]; intposition1=strip.indexof("."); intposition2=strip.indexof(".",position1+1); intposition3=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 } privatestaticstringlongtoip(longlongip) //将10进制整数形式转换成127.0.0.1形式的ip地址,在命令提示符下输入ping3396362403l { stringbuffersb=newstringbuffer(""); 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("."); returnsb.tostring(); } publicstaticvoidmain(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地址的各种表现形式: 32位二进制形式:11001010011100000110000010100011 十进制形式:3396362403 普通形式:202.112.96.163. 输出完成(耗时1秒)-正常终止 我们再一步步分开来分析一下 知识点:一个二进制数,按位左移n位,就是把该数的值乘以2的n次方 二进制除二即右移一位 [b]1、IP地址转换为整数[/b] 原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个无符号32为整数。 举例:一个ip地址为10.0.3.193 每段数字相对应的二进制数 1000001010 000000000 300000011 19311000001 组合起来即为:00001010000000000000001111000001,转换为10进制就是:167773121,即该IP地址转换后的数字就是它了。 代码如下
[u]复制代码[/u] 代码如下:
publicclassIp{ publicstaticvoidmain(String[]args){ System.out.print(ip2int("10.0.3.193")); } publicstaticlongip2int(Stringip){ String[]items=ip.split("."); returnLong.valueOf(items[0])<<24 |Long.valueOf(items[1])<<16 |Long.valueOf(items[2])<<8 |Long.valueOf(items[3]); } }
[b]2、整数转换为IP地址[/b] 原理:把这个整数转换成一个32位二进制数。从左到右,每8位进行一下分割,得到4段8位的二进制数,把这些二进制数转换成整数然后加上”。”就是这个ip地址了 举例:167773121 二进制表示形式为:00001010000000000000001111000001 分割成四段:00001010,00001010,00000011,11000001,分别转换为整数后加上“。”就得到了10.0.3.193。 代码如下
[u]复制代码[/u] 代码如下:
publicclassIp{ publicstaticvoidmain(String[]args){ System.out.print(int2ip(167773121)); } publicstaticStringint2ip(longipInt){ StringBuildersb=newStringBuilder(); sb.append(ipInt&0xFF).append("."); sb.append((ipInt>>8)&0xFF).append("."); sb.append((ipInt>>16)&0xFF).append("."); sb.append((ipInt>>24)&0xFF); returnsb.toString(); } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部