func readNibblesHighAndLow(r io.Reader) (byte, byte, error) {
	buf := make([]byte, 1)
	if n, err := r.Read(buf); err != nil || n != 1 {
		if err == io.EOF {
			return 0, 0, err
		}
		return 0, 0, errors.Wrapf(err, "read %d bytes when wanted to read the one byte header", n)
	}
	return highNibble(buf[0]), lowNibble(buf[0]), nil
}
// readNibblesHighAndLow reads one byte from the given reader then returns
// the high nibble and the low nibble of that byte.  If read encounters the
// error io.EOF, then that error is returned.
readNibblesHighAndLow reads one byte from the given reader then returns
the high nibble and the low nibble of that byte.  If read encounters the
error io.EOF, then that error is returned.
// readNibblesHighAndLow reads one byte from the given reader then returns // the high nibble and the low nibble of that byte . If read encounters the // error io . EOF then that error is returned .
func readNibblesHighAndLow(r io.Reader) (byte, byte, error) {
	buf := make([]byte, 1)
	if n, err := r.Read(buf); err != nil || n != 1 {
		if err == io.EOF {
			return 0, 0, err
		}
		return 0, 0, errors.Wrapf(err, "read %d bytes when wanted to read the one byte header", n)
	}
	return highNibble(buf[0]), lowNibble(buf[0]), nil
}
func readNibblesHighAndLow ( r io . Reader ) ( byte , byte , error ) { buf := make ( [ ] byte , 1 ) if n , err := r . Read ( buf ) ; err != nil || n != 1 { if err == io . EOF { return 0 , 0 , err } return 0 , 0 , errors . Wrapf ( err , " " , n ) } return highNibble ( buf [ 0 ] ) , lowNibble ( buf [ 0 ] ) , nil }
readNibblesHighAndLow reads one byte from the given reader then returns
the high nibble and the low nibble of that byte.
readNibblesHighAndLow reads one byte from the given reader then returns the high nibble and the low nibble of that byte .