golang不同进制之间怎么进行转换

这篇“golang不同进制之间怎么进行转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“golang不同进制之间怎么进行转换”文章吧。

成都创新互联公司服务项目包括吴起网站建设、吴起网站制作、吴起网页制作以及吴起网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,吴起网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到吴起省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1.十进制转化为其他进制

在 golang 中,可以使用 fmt 包中的 FormatInt 函数来将一个十进制数转化为指定进制的字符串。该函数的原型如下:

func FormatInt(i int64, base int) string

其中,i 表示需要转化的十进制数,base 是目标进制,可以为 2、8、10 或 16。例如,将十进制数 18 转化为二进制,代码如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    n := int64(18)
    b := strconv.FormatInt(n, 2)
    fmt.Printf("2进制:%s
", b)
}

运行结果为:

2进制:10010

在上面的代码中,使用 strconv 的 FormatInt 函数将十进制数 18 转化为 2 进制字符串,并将其打印出来。

类似的,我们可以将十进制转化为其他进制,只需要改变 base 参数即可。例如将十进制数 18 转化为八进制或十六进制,代码如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    n := int64(18)
    o := strconv.FormatInt(n, 8)
    h := strconv.FormatInt(n, 16)
    fmt.Printf("8进制:%s
", o)
    fmt.Printf("16进制:%s
", h)
}

运行结果为:

8进制:22
16进制:12

2.其他进制转化为十进制

在 golang 中,可以使用 strconv 包中的 ParseInt 函数将一个字符串表示的数字转化为十进制数。该函数的原型如下:

func ParseInt(s string, base int, bitSize int) (i int64, err error)

其中,s 表示待转化的字符串,base 表示 s 的进制,可以为 0、2、8、10 或 16,bitSize 表示结果的位数,可以为 0、8、16、32 或 64。例如将二进制数 10010 转化为十进制,代码如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    b := "10010"
    n, _ := strconv.ParseInt(b, 2, 64)
    fmt.Printf("10进制:%d
", n)
}

运行结果为:

10进制:18

在上面的代码中,使用 strconv 的 ParseInt 函数将二进制字符串转化为十进制数,并将其打印出来。

类似的,我们可以将其他进制的字符串转化为十进制数,只需要改变 base 参数即可。例如将八进制字符串 "22" 或十六进制字符串 "12" 转化为十进制数,代码如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    o := "22"
    h := "12"
    on, _ := strconv.ParseInt(o, 8, 64)
    hn, _ := strconv.ParseInt(h, 16, 64)
    fmt.Printf("8进制:%d
", on)
    fmt.Printf("16进制:%d
", hn)
}

运行结果为:

8进制:18
16进制:18

以上就是关于“golang不同进制之间怎么进行转换”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。


文章名称:golang不同进制之间怎么进行转换
转载源于:http://hbruida.cn/article/isjccd.html