温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Golang如何实现任意进制转换

发布时间:2021-02-20 11:49:07 阅读:784 作者:小新 栏目:编程语言
GO开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

小编给大家分享一下Golang如何实现任意进制转换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

示例代码:

package main

import (
 "fmt"
 "math"
 "strconv"
 "strings"
)

var tenToAny map[int]string = map[int]string{0"0"1"1"2"2"3"3"4"4"5"5"6"6"7"7"8"8"9"9"10"a"11"b"12"c"13"d"14"e"15"f"16"g"17"h"18"i"19"j"20"k"21"l"22"m"23"n"24"o"25"p"26"q"27"r"28"s"29"t"30"u"31"v"32"w"33"x"34"y"35"z"36":"37";"38"<"39"="40">"41"?"42"@"43"["44"]"45"^"46"_"47"{"48"|"49"}"50"A"51"B"52"C"53"D"54"E"55"F"56"G"57"H"58"I"59"J"60"K"61"L"62"M"63"N"64"O"65"P"66"Q"67"R"68"S"69"T"70"U"71"V"72"W"73"X"74"Y"75"Z"}

func main() {
 fmt.Println(decimalToAny(999976))
 fmt.Println(anyToDecimal("1F["76))
}

// 10进制转任意进制
func decimalToAny(num, n int) string {
 new_num_str := ""
 var remainder int
 var remainder_string string
 for num != 0 {
  remainder = num % n
  if 76 > remainder && remainder > 9 {
   remainder_string = tenToAny[remainder]
  } else {
   remainder_string = strconv.Itoa(remainder)
  }
  new_num_str = remainder_string + new_num_str
  num = num / n
 }
 return new_num_str
}

// map根据value找key
func findkey(in string) int {
 result := -1
 for k, v := range tenToAny {
  if in == v {
   result = k
  }
 }
 return result
}

// 任意进制转10进制
func anyToDecimal(num string, n int) int {
 var new_num float64
 new_num = 0.0
 nNum := len(strings.Split(num, "")) - 1
 for _, value := range strings.Split(num, "") {
  tmp := float64(findkey(value))
  if tmp != -1 {
   new_num = new_num + tmp*math.Pow(float64(n), float64(nNum))
   nNum = nNum - 1
  } else {
   break
  }
 }
 return int(new_num)
}

以上是“Golang如何实现任意进制转换”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×