目录

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实现进制之间的转换也非常简单;通过标准库就可以实现进制转换:

  1. ​strconv包​​:处理字符串与数值互转
  2. ​fmt格式化​​:快速生成进制字符串
  3. ​位运算​​:高效处理二进制位操作