正文

Go语言实现二进制与十进制互转的示例代码(go语言数字转字符串)奔走相告

文章摘要

本文介绍了将二进制字符串转换为十进制字符串的函数实现。该函数首先检查输入字符串中是否包含小数点,若包含则分别处理整数部分和小数部分。对于整数部分,从右到左逐位计算每一位的十进制值并累加到结果中;对于小数部分,逐位计算并累加到结果中。文章指出代码中存在未正确处理小数点后位数的BUG,可能导致结果不准确。

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