github.com/JohanShen/go-utils@v1.1.4-0.20201117124024-901319a2b2a0/utils/hex.go (about) 1 package utils 2 3 import ( 4 "errors" 5 "strings" 6 ) 7 8 const ( 9 hexStr = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 10 ) 11 12 // 十进制转任意进制 13 // val 十进制值,n 目标进制 2-62 14 func Oct2Any(val uint64, n int8) (string, error) { 15 16 if n < 2 || n > 62 { 17 return "", errors.New("n 的范围为 2-62 ") 18 } 19 20 remainder := uint64(0) 21 id := make([]string, 32) 22 for i := 1; val != 0; i++ { 23 remainder = val % uint64(n) 24 //fmt.Printf("v = %v, %v \r\n", remainder, val) 25 str := string(hexStr[remainder]) 26 //fmt.Printf("v = %v \r\n", str) 27 id[32-i] = str 28 val = val / uint64(n) 29 } 30 return strings.Join(id, ""), nil 31 }