const hextable … const reverseHexTable … // EncodedLen returns the length of an encoding of n source bytes. // Specifically, it returns n * 2. func EncodedLen(n int) int { … } // Encode encodes src into [EncodedLen](len(src)) // bytes of dst. As a convenience, it returns the number // of bytes written to dst, but this value is always [EncodedLen](len(src)). // Encode implements hexadecimal encoding. func Encode(dst, src []byte) int { … } // AppendEncode appends the hexadecimally encoded src to dst // and returns the extended buffer. func AppendEncode(dst, src []byte) []byte { … } var ErrLength … type InvalidByteError … func (e InvalidByteError) Error() string { … } // DecodedLen returns the length of a decoding of x source bytes. // Specifically, it returns x / 2. func DecodedLen(x int) int { … } // Decode decodes src into [DecodedLen](len(src)) bytes, // returning the actual number of bytes written to dst. // // Decode expects that src contains only hexadecimal // characters and that src has even length. // If the input is malformed, Decode returns the number // of bytes decoded before the error. func Decode(dst, src []byte) (int, error) { … } // AppendDecode appends the hexadecimally decoded src to dst // and returns the extended buffer. // If the input is malformed, it returns the partially decoded src and an error. func AppendDecode(dst, src []byte) ([]byte, error) { … } // EncodeToString returns the hexadecimal encoding of src. func EncodeToString(src []byte) string { … } // DecodeString returns the bytes represented by the hexadecimal string s. // // DecodeString expects that src contains only hexadecimal // characters and that src has even length. // If the input is malformed, DecodeString returns // the bytes decoded before the error. func DecodeString(s string) ([]byte, error) { … } // Dump returns a string that contains a hex dump of the given data. The format // of the hex dump matches the output of `hexdump -C` on the command line. func Dump(data []byte) string { … } const bufferSize … type encoder … // NewEncoder returns an [io.Writer] that writes lowercase hexadecimal characters to w. func NewEncoder(w io.Writer) io.Writer { … } func (e *encoder) Write(p []byte) (n int, err error) { … } type decoder … // NewDecoder returns an [io.Reader] that decodes hexadecimal characters from r. // NewDecoder expects that r contain only an even number of hexadecimal characters. func NewDecoder(r io.Reader) io.Reader { … } func (d *decoder) Read(p []byte) (n int, err error) { … } // Dumper returns a [io.WriteCloser] that writes a hex dump of all written data to // w. The format of the dump matches the output of `hexdump -C` on the command // line. func Dumper(w io.Writer) io.WriteCloser { … } type dumper … func toChar(b byte) byte { … } func (h *dumper) Write(data []byte) (n int, err error) { … } func (h *dumper) Close() (err error) { … }