登录
首页 >  Golang >  Go教程

Golang进制转换工具开发指南

时间:2026-01-11 09:10:47 250浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Golang进制转换工具开发教程》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

Go进制转换应优先使用标准库:ParseInt/FormatInt处理2–36进制整数互转,encoding/hex处理字节与十六进制字符串互转,fmt.Printf实现格式化输出;需注意负数、前缀、大小写、边界错误及字节与数值类型区分。

如何开发Golang进制转换工具_Golang数字计算与格式化

用 Go 写进制转换工具不难,关键是理清数字表示、字符串解析和格式化输出三者的边界。Go 标准库 strconv 包已覆盖绝大多数需求,无需手动实现除法取余逻辑,重点是选对函数、处理好错误、兼顾边界情况(如负数、前缀、大小写)。

基础进制互转:ParseInt + FormatInt

这是最常用也最稳妥的方式,适用于整数在 2–36 进制间的双向转换:

  • strconv.ParseInt(s, base, 64) 把字符串 s 按指定进制解析为 int64,支持带 0x0b0o 前缀的输入(需设 base = 0 让其自动识别)
  • strconv.FormatInt(i, base)int64 转为指定进制的字符串,结果不含前缀,字母默认小写(如 15 → "f"
  • 注意:ParseInt 对空字符串、非法字符、溢出会返回 error,必须检查;FormatInt 不会出错

十六进制与字节切片互转:encoding/hex

当处理的是原始字节(比如哈希值、密钥、二进制协议字段),别用 ParseInt/FormatInt,改用 encoding/hex

  • hex.EncodeToString([]byte{0xde, 0xad}) → "dead"
  • hex.DecodeString("beef") → []byte{0xbe, 0xef}, nil
  • 它严格按字节单位编解码,不涉及数值含义,大小写不敏感(解码时自动兼容),且支持非 ASCII 安全的编码(如 URL-safe 变体需额外处理)

格式化输出控制:fmt.Printf 与自定义前缀

终端打印或日志中常需带前缀、固定宽度、大写等效果,fmt 包比拼接字符串更简洁:

  • fmt.Printf("%b", 42)"101010"(二进制)
  • fmt.Printf("0x%04X", 255)"0x00FF"(大写十六进制,4位补零)
  • fmt.Sprintf("%o", 64)"100"(八进制)
  • 注意:%d 是十进制,%v 不做进制转换;若要统一加前缀,可封装如 "0x" + strconv.FormatInt(x, 16)

处理负数与非常规进制的注意事项

进制转换默认按“数值”进行,负数会被保留符号,但某些场景(如补码显示)需额外处理:

  • strconv.FormatInt(-10, 2)"-1010"(带负号的二进制字符串,不是补码)
  • 要得 32 位补码形式,得先转为 uint32:strconv.FormatUint(uint64(uint32(-10)), 2),结果为 32 位无符号二进制
  • 进制超出 36 会 panic(因字母最多到 'z'),如需更高进制,需自行实现编码映射表
  • 输入含空格、换行、不可见字符时,ParseInt 会失败,建议用 strings.TrimSpace 预处理

基本上就这些。标准库够用,少造轮子;错误别忽略,前缀大小写按需选;字节和数值别混用,该用 hex 就别硬 ParseInt。不复杂但容易忽略细节。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>