// Package hex is a set of aliases and helpers for using the templexxx SIMD hex // encoder. package hex import ( "encoding/hex" "github.com/templexxx/xhex" "lol.mleku.dev/chk" "lol.mleku.dev/errorf" ) var Enc = hex.EncodeToString var EncBytes = hex.Encode var Dec = hex.DecodeString var DecBytes = hex.Decode // var EncAppend = hex.AppendEncode // var DecAppend = hex.AppendDecode var DecLen = hex.DecodedLen type InvalidByteError = hex.InvalidByteError // EncAppend uses xhex to encode a sice of bytes and appends it to a provided destination slice. func EncAppend(dst, src []byte) (b []byte) { l := len(dst) dst = append(dst, make([]byte, len(src)*2)...) xhex.Encode(dst[l:], src) return dst } // DecAppend decodes a provided encoded hex encoded string and appends the decoded output to a // provided input slice. func DecAppend(dst, src []byte) (b []byte, err error) { if src == nil || len(src) < 2 { err = errorf.E("nothing to decode") return } if dst == nil { dst = []byte{} } l := len(dst) b = dst b = append(b, make([]byte, len(src)/2)...) if err = xhex.Decode(b[l:], src); chk.T(err) { return } return }