Golang二进制转换十进制代码
博客专区 > 一曲 的博客 > 博客详情
Golang二进制转换十进制代码
一曲 发表于3年前
Golang二进制转换十进制代码
  • 发表于 3年前
  • 阅读 105
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

Golang二进制转换十进制代码,使用 container/list 实现出入栈操作,完成转换。

二进制转十进制的方法是:从右到左的取数值乘以2的N次幂,依次相加,N为数值在二进制中的位数。

package main

/**
  二进制转换成十进制
  核心:
  入栈、出栈、类型转换
  sum += int(v-48) * int(math.Pow(2, N))
**/

import (
    "container/list"
    "fmt"
    "math"
)

func main() {
    stack := list.New()

    var input string
    var sum int
    var stnum, conum float64 = 0, 2

    fmt.Printf("请输入一段二进制数字:")
    fmt.Scanf("%s", &input)
    for _, c := range input {
        // 入栈 type rune
        stack.PushBack(c)
    }

    length := stack.Len()
    fmt.Printf("栈的当前容量是 %d\n", length)

    // 出栈
    for e := stack.Back(); e != nil; e = e.Prev() {
        // rune是int32的别名
        v := e.Value.(int32)
        sum += int(v-48) * int(math.Pow(conum, stnum))
        stnum++
    }
    fmt.Printf("二进制转化为十进制结果是 %d\n", sum)

    for {
    }
}


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 11
博文 31
码字总数 9713
×
一曲
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: