Golang如何实现任意进制转换的方法示例
发布时间:2020-12-16 19:06:38 所属栏目:大数据 来源:网络整理
导读:前言 最近因为工作的需要,需要写个短链服务,用到了10-62进制,网上找了一个,可以转换最多76位进制的博客,现在分享出来,下面话不多说了,来一起看看详细的介绍吧。 压缩数据用,无损压缩 示例代码: package mainimport ( "fmt" "math" "strconv" "strin
前言 最近因为工作的需要,需要写个短链服务,用到了10->62进制,网上找了一个,可以转换最多76位进制的博客,现在分享出来,下面话不多说了,来一起看看详细的介绍吧。 压缩数据用,无损压缩 示例代码: 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(9999,76)) 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) } 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |