Golang实现进制转换计算器

时间: 2023-06-17 admin 文学

Golang实现进制转换计算器

Golang实现进制转换计算器

目录

整体构思

具体实现

因为课上老师要求进制换算  我又比较懒  刚好开着Goland,所以写了这一小串代码,用于实现二进制,八进制,十进制和十六进制之间的互相转换。办法比较愚笨,高见可留评论区。

整体构思

Golang中十进制转换成二、八、十六进制非常简单,使用占位符就可以得到结果,但是我个人使用的是:

strconv.FormatInt()

(因为这个看上去比占位符要高级一些)。

举个栗子:此处用于将十进制转换为二进制:num1为十进制,num2为转换后得到的二进制

num2 := strconv.FormatInt(num1, 2)

问题在于二,八,十六进制之间的转换。思路为将其全部转为十进制,再使用之前的方法进行输出。这里使用到了

strconv.ParseInt()

再举个栗子:此处用于将二进制转换为十进制

fmt.Println(strconv.ParseInt(num, 2, 32)) 具体实现 package main import ( "fmt" "strconv" ) func main() { label1: /* 在代码运行后,首先会询问用户,输入时的进制为多少。这里直接使用Switch。 case里面则是直接将其十进制进行输出,在拿到相应的十进制后再使用占位符,直接将其对应的 2,8或16进制输出 */ var nn int fmt.Println("原数字的进制是:(2/8/10/16)") fmt.Scanln(&nn) var sv = "1" //初始化变量,随便给了个值 switch nn { case 2: //对应输入时为二进制 fmt.Println("输入一个二进制数:") fmt.Scanln(&sv) fmt.Println("他的十进制是:") fmt.Println(strconv.ParseInt(sv, 2, 32)) // 2 to 10 case 8: //对应输入时为八进制 fmt.Println("输入一个八进制数:") fmt.Scanln(&sv) fmt.Println("他的十进制是:") fmt.Println(strconv.ParseInt(sv, 8, 32)) // 8 to 10 case 10: //对应输入时为十进制,break出switch,然后直接运行后面的代码 break case 16: //对应输入时为十六进制 fmt.Println("输入一个十六进制数:") fmt.Scanln(&sv) fmt.Println("他的十进制是:") fmt.Println(strconv.ParseInt(sv, 16, 32)) // 16 to 10 default: //输入内容不在二、八、十、十六进制以内,咱们就输出一个 嘻嘻 吧 fmt.Println("嘻嘻") goto label1 } var v int64 = 1 //默认10进制,初始化变量,随便给了个值 fmt.Println("输入一个十进制数:") fmt.Scanln(&v) s2 := strconv.FormatInt(v, 2) // 10 to 2 fmt.Printf("二进制是:%v\\n", s2) s8 := strconv.FormatInt(v, 8) // 10 to 8 fmt.Printf("八进制是:%v\\n", s8) s16 := strconv.FormatInt(v, 16) //10 yo 16 fmt.Printf("十六进制是:%v\\n", s16) }