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 { } }
有疑问加站长微信联系(非本文作者)