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 {
}
}