Golang实现进制转换计算器

编程知识 更新时间:2023-04-05 19:29:19

目录

整体构思

具体实现

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

}

更多推荐

Golang实现进制转换计算器

本文发布于:2023-04-05 19:29:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/dc5dc8d418349611b971af709ce03c42.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:计算器   Golang

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 47239文章数
  • 14阅读数
  • 0评论数