先看實(shí)例
代碼如下
class ip
{
private static long iptolong(string strip)
//將127.0.0.1 形式的ip地址轉(zhuǎn)換成10進(jìn)制整數(shù),這里沒有進(jìn)行任何錯(cuò)誤處理
{
int j=0;
int i=0;
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
}
private static string longtoip(long longip)
//將10進(jìn)制整數(shù)形式轉(zhuǎn)換成127.0.0.1形式的ip地址,在命令提示符下輸入ping 3396362403l
{
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();
}
public static void main(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.pri
運(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ù)
10 00001010
0 00000000
3 00000011
193 11000001
組合起來即為:00001010 00000000 00000011 11000001,轉(zhuǎn)換為10進(jìn)制就是:167773121,即該IP地址轉(zhuǎn)換后的數(shù)字就是它了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注