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