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  }