Golang实现进制转换计算器

本文介绍了一种使用Golang进行不同进制转换的方法,主要涉及二进制、八进制、十进制和十六进制之间的相互转换。通过strconv.FormatInt()和strconv.ParseInt()函数,实现了从用户输入的指定进制转换到十进制,再由十进制转换为目标进制的功能。示例代码展示了如何交互式地获取用户输入并完成转换操作。
摘要由CSDN通过智能技术生成

目录

整体构思

具体实现

因为课上老师要求进制换算  我又比较懒  刚好开着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) 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会调制解调的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值