IPv4地址其實(shí)是32位二進(jìn)制數(shù)字,然后我們將它分成四段,每段8位。8位二進(jìn)制能表達(dá)的范圍是0~255,所以點(diǎn)分十進(jìn)制的每一個(gè)數(shù)字的取值都在0~255之間。有的時(shí)候,比如為了換算子網(wǎng)掩碼,我們需要將IP地址還原成二進(jìn)制串的形式,如:11000000101010000000110000100001。今天小編看到一個(gè)例子就是來完成這個(gè)操作的。
代碼如下:
復(fù)制代碼 代碼如下:
$ipV4 = '192.168.12.33'
-join ($ipV4.Split('.') | ForEach-Object {[System.Convert]::ToString($_,2).PadLeft(8,'0')})
#-join是把多個(gè)結(jié)果對象或數(shù)組元素組合在一起輸出。
結(jié)果將顯示為:
復(fù)制代碼 代碼如下:
11000000101010000000110000100001
我們也可以修改一下程序,分別顯示出每一段的轉(zhuǎn)換后的形式:
復(fù)制代碼 代碼如下:
$ipV4.Split('.') | ForEach-Object {
'{0,5} : {1}' -f $_, [System.Convert]::ToString($_,2).PadLeft(8,'0')
}
結(jié)果將顯示如下:
復(fù)制代碼 代碼如下:
192 : 11000000
168 : 10101000
12 : 00001100
33 : 00100001
最后補(bǔ)充說明一下這一句“[System.Convert]::ToString($_,2)”的理解。首先$_表示當(dāng)前循環(huán)變量,把一個(gè)點(diǎn)分十進(jìn)制的IP使用Split方法打散后,每個(gè)循環(huán)變量就是各個(gè)數(shù)字了,即192、168、12、33。而“[System.Convert]::ToString($_,2)”的意思是把這些數(shù)字轉(zhuǎn)換為二進(jìn)制的字符串。關(guān)于[System.Convert]::ToString的詳細(xì)理解,可以參數(shù)下面幾個(gè)例子:
復(fù)制代碼 代碼如下:
#二進(jìn)制
PS C:\Users\小編> [System.Convert]::ToString(16,2);
10000
#八進(jìn)制
PS C:\Users\小編> [System.Convert]::ToString(16,8);
20
#十進(jìn)制
PS C:\Users\小編> [System.Convert]::ToString(16,10);
16
#十六進(jìn)制
PS C:\Users\小編> [System.Convert]::ToString(16,16);
10
您可能感興趣的文章:- java實(shí)現(xiàn)ip地址與十進(jìn)制數(shù)相互轉(zhuǎn)換
- PHP中將ip地址轉(zhuǎn)成十進(jìn)制數(shù)的兩種實(shí)用方法
- 純真IP數(shù)據(jù)庫的應(yīng)用 IP地址轉(zhuǎn)化成十進(jìn)制
- 分享一個(gè)可以生成各種進(jìn)制格式IP的小工具實(shí)例代碼