题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

package main

import (
    "fmt"
    "strings"
    "strconv"
    "math"
)

func ip2number(s string) int {
    var bits [32]int
    var idx int

    ipSegment := strings.Split(s, ".")
    for _, segment := range ipSegment {
        var bit [8]int
        segmentIdx := 7
        number, _ := strconv.Atoi(segment)
        for number > 0 {
            bit[segmentIdx] = number % 2
            number /= 2
            segmentIdx--
        }

        for i:=0; i<8; i++ {
            bits[idx] = bit[i]
            idx++
        }
    }

    var sum int
    var powIdx int
    for i:=31; i>=0; i-- {
        sum += bits[i] * int(math.Pow(float64(2.0), float64(powIdx)))
        powIdx++
    }

    return sum
}

func number2ip(n int) string {
    var bits [32]int
    idx := 31

    for n > 0 {
        bits[idx] = n % 2
        n /= 2
        idx--
    }

    var ipSegment []int
    for i:=0; i<32; i=i+8 {
        segment := bits[i:i+8]
        var sum int
        var powIdx int
        for j:=7; j>=0; j-- {
            sum += segment[j] * int(math.Pow(float64(2.0), float64(powIdx)))
            powIdx++
        }
        ipSegment = append(ipSegment, sum)
    }

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

func main() {
    var ip string
    var n int

    fmt.Scan(&ip, &n)

    fmt.Println(ip2number(ip))
    fmt.Println(number2ip(n))
}
// 本题输入为两行,所以采用:fmt.Scan(&ip, &n)

全部评论

相关推荐

hanliu:1. 排版与格式问题字体与对齐问题:标题和内容的字体大小差异不够明显,无法迅速吸引目光。某些文字看起来有些拥挤(比如校园经历中的“班委成员”部分)。2. 内容逻辑性模块顺序问题:实习经历放在较靠后的位置,实际上这部分内容对应聘来说更重要,建议提前突出。细节表述不够突出:比如教育背景部分的专业课程仅仅列出名字,没有说明自己在这些课程中表现如何或者掌握了什么技能,缺乏量化描述。多余内容:例如“班委成员”和“宣传委员”这类校园经历,叙述过于普通,缺乏和岗位相关的实质性贡献。,建议简写。3. 措辞专业性表达不够精准:例如“协助班长与团支书更好地为同学服务”显得较为笼统,没有实际成果的体现。用词重复:如“学习了焊接”“学习了光检”等重复词语较多,缺乏丰富的动词来展示个人能力(如“负责”“优化”“改进”等)。技能展示不足:虽然列出了UG和CAD证书,但没有明确提到这些技能如何在实际工作中发挥作用。4. 技能匹配度技能深度不足:虽然列出了掌握的软件和技术,但没有描述技能水平(如“熟练掌握”“精通”),也没有具体案例支持这些技能。缺乏岗位导向性:比如针对机械设计与制造方向,实习经历提到了“E6尾灯项目”,但没有详细说明自己在其中的技术贡献,可能会显得经验描述泛泛而谈。5. 自我评价问题表达空泛:如“具有良好的沟通协调能力”“责任心强”之类的描述太常见,没有让人眼前一亮的特点。缺乏成果支持:自我评价中的能力没有用具体项目、经历或成就来验证,可信度较弱。 兄弟加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务