题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
package main import ( "bufio" "fmt" "os" "strconv" "strings" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { inputStr := scanner.Text() if strings.Contains(inputStr, ".") { strSli := strings.Split(inputStr, ".") if len(strSli) != 4 { continue } ret := 0 for i, val := range strSli { valInt, err := strconv.Atoi(val) if err != nil { fmt.Printf("valInt err:%v\n", err) break } var tmp = 1 for j := 0; j < 4-i-1; j++ { tmp = 256 * tmp } ret += valInt * tmp } fmt.Printf("%d\n", ret) } else { intNum, err := strconv.Atoi(inputStr) if err != nil { fmt.Printf("intNum err:%v\n", err) continue } if intNum < 256*256*256 || intNum > 256*256*256*256 { fmt.Printf("intNum not valid\n") continue } ip1 := intNum / (256 * 256 * 256) ip2 := (intNum % (256 * 256 * 256)) / (256 * 256) ip3 := ((intNum % (256 * 256 * 256)) % (256 * 256)) / 256 ip4 := intNum % 256 fmt.Printf("%d.%d.%d.%d\n", ip1, ip2, ip3, ip4) } } }