艾銻無限為您整理:IP地址轉(zhuǎn)換:數(shù)字與字符串之間的轉(zhuǎn)換
2020-02-14 17:26 作者:艾銻無限 瀏覽量:
迎戰(zhàn)疫情,艾銻無限用愛與您同行
為中國中小企業(yè)提供免費IT外包服務(wù)
這次的肺炎疫情對中國的中小企業(yè)將會是沉重的打擊,據(jù)釘釘和微信兩個辦公平臺數(shù)據(jù)統(tǒng)計現(xiàn)有2億左右的人在家遠(yuǎn)程辦公,那么對于中小企業(yè)的員工來說不懂IT技術(shù)將會讓他們面臨的最大挑戰(zhàn)和困難。
電腦不亮了怎么辦?系統(tǒng)藍(lán)屏如何處理?辦公室的電腦在家如何連接?網(wǎng)絡(luò)應(yīng)該如何設(shè)置?VPN如何搭建?數(shù)據(jù)如何對接?服務(wù)器如何登錄?數(shù)據(jù)安全如何保證?數(shù)據(jù)如何存儲?視頻會議如何搭建?業(yè)務(wù)系統(tǒng)如何開啟等等一系列的問題,都會困擾著并非技術(shù)出身的您。
好消息是當(dāng)您看到這篇文章的時候,就不用再為上述的問題而苦惱,您只需撥打艾銻無限的全國免費熱線電話:400 650 7820,就會有我們的遠(yuǎn)程工程師為您解決遇到的問題,他們可以遠(yuǎn)程幫您處理遇到的一些IT技術(shù)難題。
如遇到免費熱線占線,您還可以撥打我們的24小時值班經(jīng)理電話:15601064618或技術(shù)經(jīng)理的電話:13041036957,我們會在第一時間接聽您的來電,為您提供適合的解決方案,讓您無論在家還是在企業(yè)都能無憂辦公。
那艾銻無限具體能為您的企業(yè)提供哪些服務(wù)呢?
艾銻無限始創(chuàng)于2005年,歷經(jīng)15年服務(wù)了5000多家中小企業(yè)并保障了幾十萬臺設(shè)備的正常運轉(zhuǎn),積累了豐富的企業(yè)IT緊急問題和特殊故障的解決經(jīng)驗,制定了相對應(yīng)的解決方案。我們?yōu)槟钠髽I(yè)提供的IT服務(wù)分為三大版塊:
第一版塊是保障性IT外包服務(wù):如電腦設(shè)備運維,辦公設(shè)備運維,網(wǎng)絡(luò)設(shè)備運維,服務(wù)器運維等綜合性企業(yè)IT設(shè)備運維服務(wù)。
第二版塊是功能性互聯(lián)網(wǎng)外包服務(wù):如網(wǎng)站開發(fā)外包,小程序開發(fā)外包,APP開發(fā)外包,電商平臺開發(fā)外包,業(yè)務(wù)系統(tǒng)的開發(fā)外包和后期的運維外包服務(wù)。
第三版塊是增值性云服務(wù)外包:如企業(yè)郵箱上云,企業(yè)網(wǎng)站上云,企業(yè)存儲上云,企業(yè)APP小程序上云,企業(yè)業(yè)務(wù)系統(tǒng)上云,阿里云產(chǎn)品等后續(xù)的云運維外包服務(wù)。
您要了解更多服務(wù)也可以登錄艾銻無限的官網(wǎng):
www.bjitwx.com查看詳細(xì)說明,
在疫情期間,您企業(yè)遇到的任何困境只要找到艾銻無限,能免費為您提供服務(wù)的我們絕不收一分錢,我們?nèi)w艾銻人承諾此活動直到中國疫情結(jié)束,我
們將這次活動稱為——春雷行動。
以下還有我們?yōu)槟峁┑囊恍┘夹g(shù)資訊,以便可以幫助您更好的了解相關(guān)的IT知識,幫您渡過疫情中辦公遇到的困難和挑戰(zhàn),艾銻無限愿和中國中小企業(yè)一起共進(jìn)退,因為我們相信萬物同體,能量合一,只要我們一起齊心協(xié)
力,一定會成功。再一次祝福您和您的企業(yè),戰(zhàn)勝疫情,您和您的企業(yè)一定行。
艾銻無限為您整理:IP地址轉(zhuǎn)換:數(shù)字與字符串之間的轉(zhuǎn)換
IP 地址庫中 IP 地址的保存格式一般有兩種,一種是點分十進(jìn)制形式(192.168.1.1),另一種是數(shù)字形式(3232235777),應(yīng)用中,經(jīng)常需要在這兩種格式之間做轉(zhuǎn)換。
IP 地址庫中 IP 地址的保存格式一般有兩種,一種是點分十進(jìn)制形式(192.168.1.1),另一種是數(shù)字形式(3232235777),應(yīng)用中,經(jīng)常需要在這兩種格式之間做轉(zhuǎn)換。
針對這一個問題我在 exnet 擴(kuò)展包里面實現(xiàn)可兩者的轉(zhuǎn)換的快捷方法:
· func IP2Long(ip net.IP) (uint, error) IP2Long 把 net.IP 轉(zhuǎn)為數(shù)值
· func Long2IP(i uint) (net.IP, error) Long2IP 把數(shù)值轉(zhuǎn)為 net.IP
· func IPString2Long(ip string) (uint, error) IPString2Long 把 ip 字符串轉(zhuǎn)為數(shù)值
· func Long2IPString(i uint) (string, error) Long2IPString 把數(shù)值轉(zhuǎn)為 ip 字符串
使用示例:
1. package main
2.
3. import (
4. "fmt"
5. "net"
6. "reflect"
7.
8. "github.com/thinkeridea/go-extend/exnet"
9. )
10.
11. func main() {
12. ip := "192.168.1.1"
13.
14. n, _ := exnet.IPString2Long(ip)
15. s, _ := exnet.Long2IPString(n)
16.
17. fmt.Println(n, s == ip)
18.
19. Ip1 := net.ParseIP(ip) // 會得到一個16字節(jié)的byte,主要為了兼容ipv6
20. n, _ = exnet.IP2Long(Ip1)
21.
22. Ip2, _ := exnet.Long2IP(n)
23.
24. fmt.Println(n, reflect.DeepEqual(Ip1[12:], Ip2))
25. }
那么是如何將點分十進(jìn)制的IP地址轉(zhuǎn)為數(shù)字?
IPv4 地址有4個字節(jié),樣式如下:
· MSB————–LSB
· b4 b3 b2 b1
每個字節(jié)表示的范圍:
· byte4: 4294967296(1<<32)
· byte3: 16777216(1<<24)
· byte2: 65536(1<<16)
· byte1: 256(1<<8)
通用公式:b4<<24 | b3<<16 | b2<<16 | b1
例如,222.173.108.86
轉(zhuǎn)換方法:222<<24 | 173<<16 | 108<<8 | 86 = 3735907414
再例如,1.0.1.1
轉(zhuǎn)換方法:1<<24 | 0<<16 | 1<<8 | 1 = 16777473
exnet 中實現(xiàn)如下:
1. // IPString2Long 把ip字符串轉(zhuǎn)為數(shù)值
2. func IPString2Long(ip string) (uint, error) {
3. b := net.ParseIP(ip).To4()
4. if b == nil {
5.
return 0, errors.New("invalid ipv4 format")
6. }
7.
8.
return uint(b[3]) | uint(b[2])<<8 | uint(b[1])<<16 | uint(b[0])<<24, nil
9. }
把數(shù)值轉(zhuǎn)換為字符串的邏輯翻轉(zhuǎn)過來即可, exnet 中實現(xiàn)如下:
1. // Long2IPString 把數(shù)值轉(zhuǎn)為ip字符串
2. func Long2IPString(i uint) (string, error) {
3. if i > math.MaxUint32 {
4.
return "", errors.New("beyond the scope of ipv4")
5. }
6.
7. ip := make(net.IP, net.IPv4len)
8. ip[0] = byte(i >> 24)
9. ip[1] = byte(i >> 16)
10. ip[2] = byte(i >> 8)
11. ip[3] = byte(i)
12.
13.
return ip.String(), nil
14. }