Golang判断当前字符串是hex编码还是base64编码

由于项目经历了多次迭代,协议也发生了多次变化,所以导致有些数据中是hex编码,有的是base64编码,所以需要区分开来,写了一个苟且的方法来区分


func DecodeHexOrBase64(content string) ([]byte, error) {
    dat := []byte(content)
    isHex := true
    for _, v := range dat {
        if v >= 48 && v <= 57 || v >= 65 && v <= 70 || v >= 97 && v <= 102 {
            // isHex = true
        } else {
            isHex = false
            break
        }
    }
    if isHex {
        d, err := hex.DecodeString(content)
        if len(d) == 0 || err != nil {
            return base64.StdEncoding.DecodeString(content)
        } 
        return d, err
    } else {
        return base64.StdEncoding.DecodeString(content)
    }
}

你可能感兴趣的:(Golang判断当前字符串是hex编码还是base64编码)