Golang的进制转换实战案例
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.常用进制概述
1>.进制概述
进制也就是进位制,是人们规定的一种进位方法。举个例子:二进制就是逢二进一,八进制就是封八进一,十进制就是逢十进一,十六进制就是锋十六进一,以此类推,X进制就是逢X进位。 下面我们说一下在编程中常用的几种进制: 二进制(Binary,缩写BIN): 是计算技术中广泛应用的一种进制数。二进制数据就是用0和1两个数字来表示的数,它的基数为2,进位规则是"逢二进一",借位规则是"借一当二"。
温馨提示:不能在程序中定义二进制数字。 八进制(Octal,缩写OCT): 一些编程语言中常常以数字0开始表示该数字是八进制,采用0,1,2,3,4,5,6,7这八个数字来表示的数,他的基数为8,进位规则是"逢八进一",借位规则是"借一当八"。 十进制(Decimal,缩写DEC): 生活中常用的就是十进制,比如1张100元人名币价值等于100个一元的硬币。采用0,1,2,3,4,5,6,7,8,9这十个数字来表示的数,它的基数为10,进位规则是"逢十进一",借位规则是"借一当十"。 十六进制(Hexadecimal,缩写HEX): 在计算机中十六进制一般表示内存地址。通我们日常生活中的表示方法不一样,采用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F这十个数字[0-0]和六个字母[A-F]来表示的数,它的基数为16,进位规则是"逢十六进一",借位规则是"借一当十六"。
2>.进制转换
我记得小时候学习进制转换还是在初中的数学课本里学习的,但现在小学的课本里出现了进制转换的影子。我记得去年跟我领导的聊天时,他给我看手机里记录他小学三年级儿子的课本,其中有一道数学题搞不懂,想让我帮忙解释一下,其实就是计算机的二进制转换十进制的知识点。 大家都是九年义务教育,对简单的进制转换的概念都已经了如指掌了,毕竟生活中我们也常用到进制呢,我这里就不罗嗦了。想要简单回顾一下,可以看一下我之前学习时记录比较粗糙的笔记,博主推荐阅读: https://www.cnblogs.com/yinzhengjie/p/8656833.html https://www.cnblogs.com/yinzhengjie/p/8666354.html 接下来,我们一起来学习一下在Golang中,常用进制是如何转换的吧。
二.进制转换概述
1>.十进制转换其它进制案例
package main import ( "fmt" ) func main() { /* 温馨提示: 自动推导类型的变量默认是十进制(Decimal,缩写DEC)的数字,这可能和咱们生活中的习惯方式有关。 %b: 是一个占位符,表示一个二进制(Binary,缩写BIN)格式的数字 */ year := 2020 fmt.Printf("十进制2020对应的二进制表示为:[%b] ", year) /* %o: 是一个占位符,表示一个八进制(Octal,缩写OCT)格式的数字 */ fmt.Printf("十进制2020对应的八进制表示为:[%o] ", year) /* %x|%X: 是一个占位符,表示一个十六进制(Hexadecimal,缩写HEX)格式的数字 */ fmt.Printf("十进制2020对应的十六进制表示为:[%x] ", year) fmt.Printf("十进制2020对应的十六进制表示为:[%X] ", year) }
2>.八进制转换其它进制案例
package main import ( "fmt" ) func main() { /* 温馨提示: 以数字0开始表示该数字是八进制 %b: 是一个占位符,表示一个二进制(Binary,缩写BIN)格式的数字 */ year := 03744 fmt.Printf("八进制03744对应的二进制表示为:[%b] ", year) /* %d: 是一个占位符,表示一个十进制(Decimal,缩写DEC)格式的数字 */ fmt.Printf("八进制03744对应的十进制表示为:[%d] ", year) /* %x|%X: 是一个占位符,表示一个十六进制(Hexadecimal,缩写HEX)格式的数字 */ fmt.Printf("八进制03744对应的十六进制表示为:[%x] ", year) fmt.Printf("八进制03744对应的十六进制表示为:[%X] ", year) }
3>.十六进制转换成其它进制案例
package main import ( "fmt" ) func main() { /* 温馨提示: 以0x开始表示该数字是十六进制 %b: 是一个占位符,表示一个二进制(Binary,缩写BIN)格式的数字 */ year := 0x7e4 fmt.Printf("十六进制0x7e4对应的二进制表示为:[%b] ", year) /* %o: 是一个占位符,表示一个八进制(Octal,缩写OCT)格式的数字 */ fmt.Printf("十六进制0x7e4对应的八进制表示为:[%o] ", year) /* %d: 是一个占位符,表示一个十进制(Decimal,缩写DEC)格式的数字 */ fmt.Printf("十六进制0x7e4对应的十进制表示为:[%d] ", year) }