IP位址轉數字

2021-09-27 09:45:17 字數 1138 閱讀 3099

將ip位址轉換成數字位址的時候是我做乙個歸屬地查詢的專案是碰見的,開始我並不明白將ip轉換成數字位址的原理,可能老師上課講了但是沒有好好聽,我覺得想理解下面演算法就應該理解ip位址和數字位址的原理(菜鳥專用(^_^))

ip位址一般是乙個32位的二進位制數意思就是如果將ip位址轉換成二進位制表示應該有32為那麼長,但是它通常被分割為4個「8位二進位制數」(也就是4個位元組每,每個代表的就是小於2的8 次方)。ip位址通常用「點分十進位制」表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進位制整數。例:點分十進ip位址(100.4.5.6),實際上是32位二進位制數(01100100.00000100.00000101.00000110)

不知道各位理解了嗎?? 

了解遠離之後,其實有很多種演算法能在ip位址和數字位址之間轉換 

我先介紹下通用的方法(菜鳥適用)

val ipv4="125.213.100.123"

val fragments = ip22.split("[.]")

var ip_num=125*256*256*256+213*256*256+100*256+123

println(ip_num)     //列印的結果211113689112

34這裡我介紹乙個比較好用快速的方法(小牛適用)

val ip22="125.213.100.123"

val fragments = ip22.split("[.]")

var ip_num = 0l

for (i <- 0 until fragments.length)

println(ip_num)     //列印結果  211113689112

3456

7兩次列印結果一致,說明ok,關於如何根據數字位址來求ip位址,大家可以思考下

第二個演算法基礎不太好的同志可能有點看不懂,其中「 | 」符號的含義就是將兩個數字的二進位制按右端對齊,只要有數字1就換1,當兩個數字都是0才是0例如

202(二進位制:11001010) |  163(10100011)可以像下面這樣看   ==   235(11101011)

11001010

10100011

將有一的換成一,全是零的是零:1110101112

34然後是《這個運算符號,這兩個都是位運算符號,例項如下:

ip位址轉換數字函式 iton IP位址轉換函式

在ascii字串 192.168.0.99 與網路位元組序的二進位制值間轉換位址。涉及函式的標頭檔案為 include 一 只適用於ipv4協議的函式 int inet aton const char string,struct in addr addr 函式成功,返回值1,否則返回零。將strin...

羅馬轉數字

羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中...

IP位址後面斜槓加具體數字詳解

其實這種形式就是用cidr 無類別域間路由選擇,classless and subnet address extensions and supernetting 的形式表示的乙個網段,或者說子網。我們知道確定乙個子網需要知道主機位址和子網掩碼,但用cidr的形式,可以簡單得到兩個數值。舉例說吧,19...