github.com/influx6/npkg@v0.8.8/nbytes/hexwriter.go (about)

     1  package nbytes
     2  
     3  import "io"
     4  
     5  var lowerhex = "0123456789abcdef"
     6  
     7  // HexWriter transforms the writes the incoming data in hex format.
     8  type HexWriter struct {
     9  	io.Writer
    10  }
    11  
    12  // New returns a new instance of a HexWriter.
    13  func New(w io.Writer) *HexWriter {
    14  	return &HexWriter{Writer: w}
    15  }
    16  
    17  // Write meets the io.Write interface Write method
    18  func (hx HexWriter) Write(p []byte) (n int, err error) {
    19  	if len(p) == 0 {
    20  		return
    21  	}
    22  
    23  	var sod = []byte(`\x00`)
    24  	var b byte
    25  
    26  	for n, b = range p {
    27  		sod[2] = lowerhex[b/16]
    28  		sod[3] = lowerhex[b%16]
    29  		hx.Writer.Write(sod)
    30  	}
    31  
    32  	n++
    33  
    34  	return
    35  }