2017-09-05 138 views
1

在golang中是否有類似'npm網絡掩碼'?我需要將10.0.0.0/ 轉換爲10.0.0.0/ 255.0.0.0所以基本上以CIDR格式掩碼爲點十進制。golang CIDR前綴表示法到IP地址/子網掩碼(點十進制)

var Netmask = require('netmask').Netmask 
var block = new Netmask('10.0.0.0/8'); 
block.mask; // 255.0.0.0 

我找不到它在/golang.org/src/net/ip.go

回答

3

轉到標準庫不具備的功能來創建表示。話雖這麼說,這是不難做到自己:

https://play.golang.org/p/XT_UXoy6ra

func main() { 
    _, ipv4Net, err := net.ParseCIDR("10.0.0.0/8") 
    if err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(ipv4MaskString(ipv4Net.Mask)) 
} 

func ipv4MaskString(m []byte) string { 
    if len(m) != 4 { 
     panic("ipv4Mask: len must be 4 bytes") 
    } 

    return fmt.Sprintf("%d.%d.%d.%d", m[0], m[1], m[2], m[3]) 
} 

記住這種格式只適用於IPv4的面具。如果你想通過一個ipv6掩碼,這會驚慌。

相關問題