题解 | #整数与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)
		}
	}
}

全部评论

相关推荐

07-02 13:52
武汉大学 golang
骗你的不露头也秒
牛客87776816...:😃查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务