在编程中,经常需要在不同进制之间进行数值转换。比如处理网络协议、加密算法或底层系统开发时,常常会遇到二进制、八进制、十进制和十六进制之间的转换需求。Go语言标准库中的 strconv 包提供了强大而简洁的工具来完成这些任务。
本文将带你从零开始,深入浅出地掌握 Go语言 中使用 strconv 包进行进制转换的方法。无论你是刚入门的开发者,还是希望巩固基础知识的老手,这篇教程都能帮到你。
strconv(string convert)是 Go 语言标准库中用于字符串与基本数据类型之间相互转换的包。它不仅支持整数、浮点数的解析与格式化,还特别支持不同进制的表示与转换。
要将一个十进制整数转换为二进制、八进制或十六进制字符串,可以使用 strconv.FormatInt(有符号整数)或 strconv.FormatUint(无符号整数)。
函数签名如下:
func FormatInt(i int64, base int) stringfunc FormatUint(i uint64, base int) string 其中 base 参数指定目标进制,取值范围为 2 到 36。常用值包括:
2:二进制8:八进制10:十进制16:十六进制示例代码:
package mainimport ( "fmt" "strconv")func main() { num := int64(255) bin := strconv.FormatInt(num, 2) // 二进制 oct := strconv.FormatInt(num, 8) // 八进制 dec := strconv.FormatInt(num, 10) // 十进制 hex := strconv.FormatInt(num, 16) // 十六进制 fmt.Println("二进制:", bin) // 输出: 11111111 fmt.Println("八进制:", oct) // 输出: 377 fmt.Println("十进制:", dec) // 输出: 255 fmt.Println("十六进制:", hex) // 输出: ff} 反过来,如果你有一个表示二进制、八进制或十六进制的字符串,想把它转成十进制整数,可以使用 strconv.ParseInt 或 strconv.ParseUint。
函数签名:
func ParseInt(s string, base int, bitSize int) (i int64, err error)func ParseUint(s string, base int, bitSize int) (i uint64, err error) 参数说明:
s:待解析的字符串base:字符串的原始进制(如 2、8、16),若设为 0,则自动根据前缀判断(如 0x 表示十六进制)bitSize:结果整数的位数(0、8、16、32、64),用于溢出检查示例代码:
package mainimport ( "fmt" "strconv")func main() { // 二进制字符串转十进制 binStr := "11111111" num1, _ := strconv.ParseInt(binStr, 2, 64) fmt.Println("二进制转十进制:", num1) // 255 // 十六进制字符串(带前缀) hexStr := "0xFF" num2, _ := strconv.ParseInt(hexStr, 0, 64) // base=0 自动识别 0x fmt.Println("十六进制转十进制:", num2) // 255 // 八进制字符串 octStr := "377" num3, _ := strconv.ParseInt(octStr, 8, 64) fmt.Println("八进制转十进制:", num3) // 255} ParseInt 时,如果字符串包含非法字符(如二进制字符串中出现 '2'),会返回错误。base=0 时,Go 会根据以下前缀自动判断进制:0b 或 0B → 二进制0 开头(非 0x)→ 八进制(注意:仅限于像 "0777" 这样的形式)0x 或 0X → 十六进制通过 Go 语言的 strconv 包,我们可以轻松实现各种进制之间的转换。无论是将十进制数字格式化为二进制字符串,还是解析十六进制配置项,strconv 都提供了安全、高效且易用的接口。
掌握这些基础技能,不仅能提升你的 Go语言 编程能力,还能在实际项目中灵活应对各种数据表示需求。希望这篇关于 strconv 进制转换 的 教程 对你有所帮助!
关键词:Go语言、strconv、进制转换、教程
本文由主机测评网于2025-12-15发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025128014.html