65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"github.com/jxskiss/base62"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
var encoding = base62.NewEncoding("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
|
|
|
|
func DecodeBinaryNumber(i string) uint64 {
|
|
if n, err := strconv.ParseUint(i, 10, 0); strings.Index(i, ".") == -1 && err == nil {
|
|
return n
|
|
}
|
|
|
|
if n, err := encoding.ParseUint([]byte(strings.ReplaceAll(i, ".", ""))); err == nil {
|
|
return n
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
func EncodeBinaryNumber(n uint64) string {
|
|
v1 := string(encoding.FormatUint(n))
|
|
v2 := strconv.FormatUint(n, 10)
|
|
|
|
if !strings.ContainsAny(v1, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") {
|
|
v1 = "." + v1
|
|
}
|
|
|
|
if len(v1) >= len(v2) {
|
|
return v2
|
|
}
|
|
|
|
return v1
|
|
}
|
|
|
|
func DecodeHexBinaryNumber(i string) string {
|
|
if _, err := hex.DecodeString(i); strings.Index(i, ".") == -1 && err != nil {
|
|
return i
|
|
}
|
|
|
|
if n, err := encoding.Decode([]byte(strings.ReplaceAll(i, ".", ""))); err == nil {
|
|
return hex.EncodeToString(n)
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
func EncodeHexBinaryNumber(v2 string) string {
|
|
b, _ := hex.DecodeString(v2)
|
|
v1 := string(encoding.Encode(b))
|
|
|
|
if !strings.ContainsAny(v1, "GHIJKLMNOPQRSTUVWXYZghijklmnopqrstuvwxyz") {
|
|
v1 = "." + v1
|
|
}
|
|
|
|
if len(v1) >= len(v2) {
|
|
return v2
|
|
}
|
|
|
|
return v1
|
|
}
|