code: func (d *Decoder) DecodeHyper() (int64, int, error) {
  	var buf [8]byte
  	n, err := io.ReadFull(d.r, buf[:])
  	if err != nil {
  		msg := fmt.Sprintf(errIODecode, err.Error(), 8)
  		err := unmarshalError("DecodeHyper", ErrIO, msg, buf[:n], err)
  		return 0, n, err
  	}
  
  	rv := int64(buf[7]) | int64(buf[6])<<8 |
  		int64(buf[5])<<16 | int64(buf[4])<<24 |
  		int64(buf[3])<<32 | int64(buf[2])<<40 |
  		int64(buf[1])<<48 | int64(buf[0])<<56
  	return rv, n, err
  }
docs: // DecodeHyper treats the next 8 bytes as an XDR encoded hyper value and
  // returns the result as an int64  along with the number of bytes actually read.
  //
  // An UnmarshalError is returned if there are insufficient bytes remaining.
  //
  // Reference:
  // 	RFC Section 4.5 - Hyper Integer
  // 	64-bit big-endian signed integer in range [-9223372036854775808, 9223372036854775807]