package convutil import ( "encoding/hex" "strings" ) type HexConvert struct{} func (HexConvert) Enable() bool { return true } func (HexConvert) Encode(str string) (string, bool) { hexStrArr := strings.Split(str, "\\x") hexStr := strings.Join(hexStrArr, "") if decodeStr, err := hex.DecodeString(hexStr); err == nil { return string(decodeStr), true } return str, false } func (HexConvert) Decode(str string) (string, bool) { decodeStr := hex.EncodeToString([]byte(str)) decodeStr = strings.ToUpper(decodeStr) var resultStr strings.Builder for i := 0; i < len(decodeStr); i += 2 { resultStr.WriteString("\\x") resultStr.WriteString(decodeStr[i : i+2]) } return resultStr.String(), true }