func (c *Coder) UR(state []uint8) uint32 {
	return uint32(c.symbol(state, false))
}
UR gets the next range coded unsigned scalar symbol.

See: 4. Bitstream
package rangecoder
type Coder struct {
	buf        []byte
	pos        int
	low        uint16
	rng        uint16
	cur_byte   int32
	zero_state [256]uint8
	one_state  [256]uint8
}
func NewCoder(buf []byte) *Coder {
	ret := new(Coder)
	ret.buf = buf
	ret.pos = 2
	ret.low = uint16(buf[0])<<8 | uint16(buf[1])
	ret.rng = 0xFF00
	ret.cur_byte = -1
	if ret.low >= ret.rng {
		ret.low = ret.rng
		ret.pos = len(buf) - 1
	}
	ret.SetTable(DefaultStateTransition)
	return ret
}
func (c *Coder) refill() {
	if c.rng < 0x100 {
		c.rng = c.rng << 8
		c.low = c.low << 8
		if c.pos < len(c.buf) {
			c.low += uint16(c.buf[c.pos])
			c.pos++
		}
	}
}
func (c *Coder) get(state *uint8) bool {
	rangeoff := uint16((uint32(c.rng) * uint32((*state))) >> 8)
	c.rng -= rangeoff
	if c.low < c.rng {
		*state = c.zero_state[int(*state)]
		c.refill()
		return false
	} else {
		c.low -= c.rng
		*state = c.one_state[int(*state)]
		c.rng = rangeoff
		c.refill()
		return true
	}
}