golang 二进制转十进制实现方式

jerrychen · · 4619 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang 二进制转十进制实现方式

直接上代码

package main

import (
	"fmt"
	"math"
)

func StringToIntArray(input string) []int {
	output := []int{}
	for _, v := range input {
		output = append(output, int(v))
	}
	for i, j := 0, len(output)-1; i < j; i, j = i+1, j-1 {
		output[i], output[j] = output[j], output[i]
	}
	return output
}

func getInput(input string) <-chan int {
	out := make(chan int)
	go func() {
		for _, b := range StringToIntArray(input) {
			out <- b
		}
		close(out)
	}()

	return out
}
func sq(in <-chan int) <-chan int {
	out := make(chan int)

	var base, i float64 = 2, 0
	go func() {
		for n := range in {
			out <- (n - 48) * int(math.Pow(base, i))
			i++
		}
		close(out)
	}()
	return out
}

func main() {
	input := "1010"
	c := getInput(input)
	out := sq(c)
	sum := 0
	for o := range out {
		// fmt.Println(o)
		sum += o
	}
	fmt.Println(sum)
	// fmt.Println(sum / 1024 / 1024)
}

本文来自:博客园

感谢作者:jerrychen

查看原文:golang 二进制转十进制实现方式

入群交流(和以上内容无关):Go中文网 QQ 交流群:729884609 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

4619 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传