最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

classip
{
privatestaticlongiptolong(stringstrip)
//將127.0.0.1形式的ip地址轉(zhuǎn)換成10進制整數(shù),這里沒有進行任何錯誤處理
{
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進制整數(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位二進制形式:");
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));
}
}

運行結(jié)果:
ip地址的各種表現(xiàn)形式:
32位二進制形式:11001010011100000110000010100011
十進制形式:3396362403
普通形式:202.112.96.163.
輸出完成(耗時1秒)-正常終止
我們再一步步分開來分析一下
知識點:一個二進制數(shù),按位左移n位,就是把該數(shù)的值乘以2的n次方
二進制除二即右移一位
1、IP地址轉(zhuǎn)換為整數(shù)
原理:IP地址每段可以看成是8位無符號整數(shù)即0-255,把每段拆分成一個二進制形式組合起來,然后把這個二進制數(shù)轉(zhuǎn)變成
一個無符號32為整數(shù)。
舉例:一個ip地址為10.0.3.193
每段數(shù)字相對應(yīng)的二進制數(shù)
1000001010
000000000
300000011
19311000001
組合起來即為:00001010000000000000001111000001,轉(zhuǎn)換為10進制就是: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地址
原理:把這個整數(shù)轉(zhuǎn)換成一個32位二進制數(shù)。從左到右,每8位進行一下分割,得到4段8位的二進制數(shù),把這些二進制數(shù)轉(zhuǎn)換成整數(shù)然后加上”。”就是這個ip地址了
舉例:167773121
二進制表示形式為: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)文章

  • mybatisplus?selectOne查詢,有數(shù)據(jù),但返回為null問題

    mybatisplus?selectOne查詢,有數(shù)據(jù),但返回為null問題

    這篇文章主要介紹了mybatisplus?selectOne查詢,有數(shù)據(jù),但返回為null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java之一文詳解String字符串的用法

    Java之一文詳解String字符串的用法

    本文將給大家重點講解一下String的用法,因為這個太常用,也太常考了。String字符串的內(nèi)容是比較多的,需要初學(xué)者進行專門的學(xué)習(xí),尤其是它的一些底層原理更需要我們來了解,需要的同學(xué)跟著小編一起學(xué)習(xí)吧
    2023-05-05
  • JAVA?流程控制專項精講

    JAVA?流程控制專項精講

    不喜歡羅里吧嗦,講的很精簡易懂。從基礎(chǔ)開始講,后續(xù)會講到JAVA高級,中間會穿插面試題和項目實戰(zhàn),希望能給大家?guī)韼椭?/div> 2022-03-03
  • Mybatis分解式查詢使用方法

    Mybatis分解式查詢使用方法

    這篇文章主要介紹了Mybatis分解式查詢使用方法,分解式查詢就是將一條Sql語句拆分成多條。在 MyBatis 多表查詢中,使用連接查詢時一個 Sql 語句就可以查詢出所有的數(shù)據(jù)
    2023-04-04
  • 一文帶你吃透JSP增刪改查實戰(zhàn)案例詳細解讀

    一文帶你吃透JSP增刪改查實戰(zhàn)案例詳細解讀

    這篇文章主要為大家詳細介紹了JSP中增刪改查實戰(zhàn)案例的相關(guān)知識,文中的示例代碼講解現(xiàn)象,具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • java對接微信支付SDK接口簡單圖文教程

    java對接微信支付SDK接口簡單圖文教程

    在微信支付接口對接過程中,開發(fā)者需準備多項關(guān)鍵參數(shù),如開發(fā)者ID(appid)、商戶號等,并完成相關(guān)注冊與認證流程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-11-11
  • Java利用LocalDate進行日期處理的完全指南

    Java利用LocalDate進行日期處理的完全指南

    這篇文章主要為大家詳細介紹了Java利用LocalDate進行日期處理的詳細教程,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之?dāng)?shù)組

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之?dāng)?shù)組

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之?dāng)?shù)組,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • IDEA如何修改maven的JVM啟動內(nèi)存參數(shù)

    IDEA如何修改maven的JVM啟動內(nèi)存參數(shù)

    這篇文章主要介紹了IDEA如何修改maven的JVM啟動內(nèi)存參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Java 異常的知識整理

    Java 異常的知識整理

    這篇文章主要介紹了Java 異常的知識整理的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評論

龙泉市| 原阳县| 浦江县| 嵊泗县| 文化| 哈尔滨市| 秦安县| 寻乌县| 兴安县| 拉孜县| 阜康市| 虎林市| 肥西县| 象山县| 巩义市| 襄樊市| 宁陵县| 鹤壁市| 界首市| 桓台县| 儋州市| 丹江口市| 常宁市| 沭阳县| 西丰县| 临夏市| 黎城县| 榆树市| 兴安县| 望城县| 商丘市| 福鼎市| 丽水市| 乡宁县| 卓资县| 敖汉旗| 威宁| 盱眙县| 锡林浩特市| 龙川县| 临邑县|