欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)ip地址與十進(jìn)制數(shù)相互轉(zhuǎn)換

 更新時(shí)間:2012年12月02日 12:08:18   作者:  
本文介紹在java中IP地址轉(zhuǎn)換十進(jìn)制數(shù)及把10進(jìn)制再轉(zhuǎn)換成IP地址的方法及實(shí)例參考,曬出來和大家分享一下
先看實(shí)例
代碼如下
復(fù)制代碼 代碼如下:

classip
{
privatestaticlongiptolong(stringstrip)
//將127.0.0.1形式的ip地址轉(zhuǎn)換成10進(jìn)制整數(shù),這里沒有進(jìn)行任何錯(cuò)誤處理
{
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進(jìn)制整數(shù)形式轉(zhuǎn)換成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地址的各種表現(xiàn)形式:rn");
system.out.print("32位二進(jìn)制形式:");
system.out.println(long.tobinarystring(3396362403l));
system.out.print("十進(jìn)制形式:");
system.out.println(iptolong("202.112.96.163"));
system.out.print("普通形式:");
system.out.println(longtoip(3396362403l));
}
}

運(yùn)行結(jié)果:
ip地址的各種表現(xiàn)形式:
32位二進(jìn)制形式:11001010011100000110000010100011
十進(jìn)制形式:3396362403
普通形式:202.112.96.163.
輸出完成(耗時(shí)1秒)-正常終止
我們?cè)僖徊讲椒珠_來分析一下
知識(shí)點(diǎn):一個(gè)二進(jìn)制數(shù),按位左移n位,就是把該數(shù)的值乘以2的n次方
二進(jìn)制除二即右移一位
1、IP地址轉(zhuǎn)換為整數(shù)
原理:IP地址每段可以看成是8位無符號(hào)整數(shù)即0-255,把每段拆分成一個(gè)二進(jìn)制形式組合起來,然后把這個(gè)二進(jìn)制數(shù)轉(zhuǎn)變成
一個(gè)無符號(hào)32為整數(shù)。
舉例:一個(gè)ip地址為10.0.3.193
每段數(shù)字相對(duì)應(yīng)的二進(jìn)制數(shù)
1000001010
000000000
300000011
19311000001
組合起來即為:00001010000000000000001111000001,轉(zhuǎn)換為10進(jìn)制就是:167773121,即該IP地址轉(zhuǎn)換后的數(shù)字就是它了。
代碼如下
復(fù)制代碼 代碼如下:

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]);
}
}

2、整數(shù)轉(zhuǎn)換為IP地址
原理:把這個(gè)整數(shù)轉(zhuǎn)換成一個(gè)32位二進(jìn)制數(shù)。從左到右,每8位進(jìn)行一下分割,得到4段8位的二進(jìn)制數(shù),把這些二進(jìn)制數(shù)轉(zhuǎn)換成整數(shù)然后加上”?!本褪沁@個(gè)ip地址了
舉例:167773121
二進(jìn)制表示形式為:00001010000000000000001111000001
分割成四段:00001010,00001010,00000011,11000001,分別轉(zhuǎn)換為整數(shù)后加上“?!本偷玫搅?0.0.3.193。
代碼如下
復(fù)制代碼 代碼如下:

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();
}
}

相關(guān)文章

  • Java紅黑樹的數(shù)據(jù)結(jié)構(gòu)與算法解析

    Java紅黑樹的數(shù)據(jù)結(jié)構(gòu)與算法解析

    紅黑樹問題是各大計(jì)算機(jī)考研命題以及面試算法題目中的熱門,接下來我們?yōu)榇蠹覉D解紅黑樹的數(shù)據(jù)結(jié)構(gòu)與算法解析,需要的朋友可以參考下
    2021-08-08
  • Java8中List轉(zhuǎn)換String字符串幾種方式

    Java8中List轉(zhuǎn)換String字符串幾種方式

    這篇文章主要給大家介紹了關(guān)于Java8中List轉(zhuǎn)換String字符串的幾種方式,在實(shí)際開發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,文中給出了幾種方法的示例代碼,需要的朋友可以參考下
    2023-07-07
  • SpringBoot整合Shiro實(shí)現(xiàn)登錄認(rèn)證的方法

    SpringBoot整合Shiro實(shí)現(xiàn)登錄認(rèn)證的方法

    這篇文章主要介紹了SpringBoot整合Shiro實(shí)現(xiàn)登錄認(rèn)證的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Springboot整合Redis實(shí)現(xiàn)超賣問題還原和流程分析(分布式鎖)

    Springboot整合Redis實(shí)現(xiàn)超賣問題還原和流程分析(分布式鎖)

    最近在研究超賣的項(xiàng)目,寫一段簡單正常的超賣邏輯代碼,多個(gè)用戶同時(shí)操作同一段數(shù)據(jù)出現(xiàn)問題,糾結(jié)該如何處理呢?下面小編給大家?guī)砹薙pringboot整合Redis實(shí)現(xiàn)超賣問題還原和流程分析,感興趣的朋友一起看看吧
    2021-10-10
  • Java 高并發(fā)六:JDK并發(fā)包2詳解

    Java 高并發(fā)六:JDK并發(fā)包2詳解

    本文主要介紹Java高并發(fā)這里整理了詳細(xì)資料,并講解了 1. 線程池的基本使用 2. 擴(kuò)展和增強(qiáng)線程池 3. ForkJoin的知識(shí),有興趣的小伙伴可以參考下
    2016-09-09
  • Java+EasyExcel實(shí)現(xiàn)文件上傳功能

    Java+EasyExcel實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了如何通過Java和EasyExcel實(shí)現(xiàn)文件上傳功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • Java語言基于無向有權(quán)圖實(shí)現(xiàn)克魯斯卡爾算法代碼示例

    Java語言基于無向有權(quán)圖實(shí)現(xiàn)克魯斯卡爾算法代碼示例

    這篇文章主要介紹了Java語言基于無向有權(quán)圖實(shí)現(xiàn)克魯斯卡爾算法代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Maven倉庫無用文件和文件夾清理的方法實(shí)現(xiàn)

    Maven倉庫無用文件和文件夾清理的方法實(shí)現(xiàn)

    這篇文章主要介紹了Maven倉庫無用文件和文件夾清理的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Mybatis使用注解實(shí)現(xiàn)復(fù)雜動(dòng)態(tài)SQL的方法詳解

    Mybatis使用注解實(shí)現(xiàn)復(fù)雜動(dòng)態(tài)SQL的方法詳解

    當(dāng)使用 MyBatis 注解方式執(zhí)行復(fù)雜 SQL 時(shí),你可以使用 @Select、@Update、@Insert、@Delete 注解直接在接口方法上編寫 SQL,本文給大家介紹了Mybatis如何使用注解實(shí)現(xiàn)復(fù)雜動(dòng)態(tài)SQL,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • JVM分配和回收堆外內(nèi)存的方式與注意點(diǎn)

    JVM分配和回收堆外內(nèi)存的方式與注意點(diǎn)

    JVM啟動(dòng)時(shí)分配的內(nèi)存稱為堆內(nèi)存,與之相對(duì)的,在代碼中還可以使用堆外內(nèi)存,比如Netty,廣泛使用了堆外內(nèi)存,下面這篇文章主要給大家介紹了關(guān)于JVM分配和回收堆外內(nèi)存的方式與注意點(diǎn),需要的朋友可以參考下
    2022-07-07

最新評(píng)論