平時在資料庫的程式設計過程中,需要記錄一些ip位址,原本是直接和ip位址(***.***.***.***)的形式儲存,也就是說在資料庫裡是明文的,且是字串,比較佔空間。
有一天同事讓我幫他把乙個資料庫裡的一些數字轉成ip位址,那個資料庫是sygate(乙個共享上網的軟體)用來記錄上網記錄的,我開啟資料庫看了看,剛開始沒有什麼頭緒,因為自己對這方面沒有什麼研究,於是就去網上找找,看看有沒有相關的資料,嗯,不錯,現在的網路基本上想要的資料都可以找的到,我找的一篇文章,或者更恰當的說是一段文字說明,介紹它的演算法的;既然已經有了頭緒,那麼就開始用**來實現吧。
'轉換過程如下:
'1、取得ip,如:192.168.0.1
'2、再將ip順序反**1.0.168.192
'3、將ip分成四部分,分別轉成16進製制,位數不足,在左邊加0,轉換完成後為:01.00.a8.c0
'4、去掉所有的".",結果為:100a8c0
'5、再將其轉成十進位制:16820416
'// ip到數字轉換
public function iptonumber(byval strvalue as string) as string
dim strtemp as string
dim strip() as string
dim stroutput as string
dim i as integer
on error goto locaterr
'// 將ip分成4個部份
strip = split(strvalue, ".")
'// 這裡是將ip倒過來的,即:192.168.0.1=1.0.168.192
for i = 3 to 0 step -1
strtemp = hex$(strip(i))
'// 將每部份以2位數的數字表示
stroutput = stroutput & string(2 - len(strtemp), "0") & strtemp
next
iptonumber = cstr(trim(clng("&h" & stroutput)))
exit function
locaterr:
err.clear
iptonumber = ""
end function
'// 數字到ip轉換(是通過 iptonumber 轉換過的數字)
public function numbertoip(byval strvalue as string) as string
dim strtemp as string
dim strip(1 to 4) as string
dim stroutput as string
dim i as integer
on error goto locaterr
'// 取得十六進製制值
strtemp = hex$(strvalue)
'// 不足8位前面加 0
strtemp = string(8 - len(strtemp), "0") & strtemp
'// 將數字以每2位分給陣列
for i = 1 to 4
strip(i) = mid$(strtemp, (i - 1) * 2 + 1, 2)
next
'// 合併ip
for i = 4 to 1 step -1
stroutput = stroutput & cint("&h" & strip(i)) & "."
next
'// 去掉最後的乙個 "."
stroutput = left$(stroutput, len(stroutput) - 1)
numbertoip = stroutput
exit function
locaterr:
err.clear
numbertoip = ""
end function
ip位址轉換數字函式 iton IP位址轉換函式
在ascii字串 192.168.0.99 與網路位元組序的二進位制值間轉換位址。涉及函式的標頭檔案為 include 一 只適用於ipv4協議的函式 int inet aton const char string,struct in addr addr 函式成功,返回值1,否則返回零。將strin...
IP與數字互相轉換(PHP )
將ip轉換為數字 functionipton ip ipstr.iphex 將四段ip的16進製制數連線起來,得到乙個16進製制字串,長度為8 returnhexdec ipstr 將16進製制字串轉換成10進製,得到ip的數字表示 將數字轉換為ip,進行上面函式的逆向過程 functionntoi...
PHP實現IP 數字互相轉換
將ip轉換為數字 function ipton ip ipstr iphex 將四段ip的16進製制數連線起來,得到乙個16進製制字串,長度為8 return hexdec ipstr 將16進製制字串轉換成10進製,得到ip的數字表示 將數字轉換為ip,進行上面函式的逆向過程 function n...