题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
var ip1 string
fmt.Scanln(&ip1)
fmt.Println(ipToDecimal(ip1))
var ip2 string
fmt.Scanln(&ip2)
decimalIP, _ := strconv.ParseUint(ip2, 10, 32)
binaryIP := fmt.Sprintf("%032b", decimalIP)
octets := []string{}
for i := 0; i < len(binaryIP); i += 8 {
octet, _ := strconv.ParseUint(binaryIP[i:i+8], 2, 32)
octets = append(octets, strconv.FormatUint(octet, 10))
}
realIP := strings.Join(octets, ".")
fmt.Println(realIP)
}
func ipToDecimal(ip string) int64 {
segments := strings.Split(ip, ".")
var binary string
for _, segment := range segments {
num, _ := strconv.Atoi(segment)
binary += fmt.Sprintf("%08b", num)
}
decimal, _ := strconv.ParseInt(binary, 2, 64)
return decimal
}