登录
首页 >  Golang >  Go教程

Go语言怎么实现二进制与十进制互转

来源:亿速云

时间:2023-05-04 21:19:53 266浏览 收藏

大家好,我们又见面了啊~本文《Go语言怎么实现二进制与十进制互转》的内容中将会涉及到go语言等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

这篇“Go语言怎么实现二进制与十进制互转”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go语言怎么实现二进制与十进制互转”文章吧。

二进制转十进制

/*
   转换规则:   11001 从末尾到开头,以2为底数,从0开始递增为指数 * 二进制数,然后将这些二进制数相加即可得出10进制数
    11001 = 1 * 2^0  + 0 * 2^1  + 0 * 2^2  + 1 * 2^3  + 1 * 2^4   =  1 + 0 + 0 + 8 + 16 = 25
    这个规则也适用于其他进制转换为十进制,只需要把底数替换为相应的进制数即可,这种方法叫做  “按权展开法"

    注意:    二进制数也有小数点,区别是小数点左边的指数为正数,右边的指数为负数
    例如:    11.01 =  1 * 2^-2   + 0 * 2^-1 +  1 * 2^0  + 1 * 2^1  = 0.25 + 0 + 1 + 2 = 3.25
*/
func binaryToDecimal(val string) string  {
    // 获取二进制字符字符串
    // 使用前可使用正则校验    [0-1]|[0-1].[0-1]
    var text = val
    // 指数 v1
    var v1 float64 = 0
    var  len  =  len(text)
    // 查看是否包含小数点
    contains := strings.Contains(text, ".")
    if contains {
        index := strings.LastIndex(text, ".")
        if index == (len -1) {
            text = text[0 : len-1]
        } else {
            v3  :=len - index
            v3--
            v1 = float64(0 - v3)
        }
    }
    fmt.Println(v1)
    // 结果
    var result float64
    for i := len -1; i >= 0; i-- {
        u := string(text[i])
        if u == "." {
            continue
        }
        v2,error := strconv.ParseFloat(u, 64)
        if error != nil {
            fmt.Println("转换失败",error)
        }
        // 乘数
        pow := math.Pow(2, v1)
        // 数值累加
        result = result + (v2 * pow)
        // 指数递增
        v1++
    }
    // 这里有个BUG,未判断得出的十进制数小数点后面有几位小数
    return strconv.FormatInt(int64(result), 10)
}

十进制转二进制

/*
   十进制转 二进制的方法  十进制数除以2取余数法
 */
func  decimalToBinary(val string) string  {
    number, err := strconv.ParseInt(val, 10, 64)
    if err != nil {
        fmt.Println("数字转换失败",err)
        return ""
    }

    // 查看数字是否是负数
    var bool  = number = 0; i-- {
        finalResult = fmt.Sprint(finalResult,string(result[i]))
    }
    // 如果是负数,则增加符号
    if bool {
        finalResult = fmt.Sprint("-",finalResult)
    }
    return finalResult
}

以上就是关于“Go语言怎么实现二进制与十进制互转”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注golang学习网行业资讯频道。

好了,本文到此结束,带大家了解了《Go语言怎么实现二进制与十进制互转》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>