Go语言中不同进制的互转方法:二进制/八进制/十六进制互转方法
目录
一、十进制转其它进制
(一)十进制转二进制
num := 42
binStr := strconv.FormatInt(int64(num), 2) // 101010
(二)十进制转十六进制
num := 42
// 十进制转十六进制(大写)
hexStr := fmt.Sprintf("%X", num) // 2A
// 结果 0x 或 0X 开头
hexStr := fmt.Sprintf("0X%X", num) // 2A
(三)十进制转八进制
num := 42
// 十进制转八进制
res := strconv.FormatInt(int64(num), 8)
(四)十进制转任意进制
// 十进制转任意进制(2-36)
customBase := strconv.FormatInt(255, 7) // 511 => 7进制
二、其它进制转十进制
(一)二进制转十进制
binStr := "101010" // 二进制
// 二进制转十进制
num, _ := strconv.ParseInt(binStr, 2, 64) // 42
fmt.Println(num)
(二)十六进制转十进制
// 十六进制
hexStr := "1F" // 注意不要带 0x 前缀
// 十六进制转十进制
num, _ := strconv.ParseInt(hexStr, 16, 64) // 31
fmt.Println(num)
(三)八进制转十进制
// 八进制
base8Str := "511"
num, _ := strconv.ParseInt(base8Str, 8, 64) // 329
fmt.Println(num)
(四)其他进制转十进制
// 自定义进制解析(支持2-36进制)
base7Str := "511"
num, _ := strconv.ParseInt(base7Str, 7, 64) // 255
总结
go实现进制之间的转换也非常简单;通过标准库就可以实现进制转换:
- strconv包:处理字符串与数值互转
- fmt格式化:快速生成进制字符串
- 位运算:高效处理二进制位操作