func (n *Number) Uint() (uint64, bool) {
	return n.bits, n.typ == UintType
}
Uint casts the number as a uint64, and returns
whether or not that was the underlying type.
package msgp
import (
	"math"
	"strconv"
)
type Number struct {
	bits uint64
	typ  Type
}
func (n *Number) AsInt(i int64) {
	if i == 0 {
		n.typ = InvalidType
		n.bits = 0
		return
	}
	n.typ = IntType
	n.bits = uint64(i)
}
func (n *Number) AsUint(u uint64) {
	n.typ = UintType
	n.bits = u
}
func (n *Number) AsFloat32(f float32) {
	n.typ = Float32Type
	n.bits = uint64(math.Float32bits(f))
}
func (n *Number) AsFloat64(f float64) {
	n.typ = Float64Type
	n.bits = math.Float64bits(f)
}
func (n *Number) Int() (int64, bool) {
	return int64(n.bits), n.typ == IntType || n.typ == InvalidType
}