func (dec *Decoder) readUint32() (uint32, error) {
	dec.ensureAlignment(SizeUint32)
	b, err := dec.readBytes(SizeUint32)
	if err != nil {
		return uint32(0), err
	}
	return dec.ch.Endianness.Uint32(b), nil
}
readUint32 reads bytes representing a 32bit unsigned integer.
package ndr
import (
	"bytes"
	"encoding/binary"
	"math"
)
const (
	SizeBool   = 1
	SizeChar   = 1
	SizeUint8  = 1
	SizeUint16 = 2
	SizeUint32 = 4
	SizeUint64 = 8
	SizeEnum   = 2
	SizeSingle = 4
	SizeDouble = 8
	SizePtr    = 4
)
func (dec *Decoder) readBool() (bool, error) {
	i, err := dec.readUint8()
	if err != nil {
		return false, err
	}
	if i != 0 {
		return true, nil
	}
	return false, nil
}
func (dec *Decoder) readChar() (rune, error) {
	var r rune
	a, err := dec.readUint8()
	if err != nil {
		return r, err
	}
	return rune(a), nil
}
func (dec *Decoder) readUint8() (uint8, error) {
	b, err := dec.r.ReadByte()
	if err != nil {
		return uint8(0), err
	}
	return uint8(b), nil
}
func (dec *Decoder) readUint16() (uint16, error) {
	dec.ensureAlignment(SizeUint16)
	b, err := dec.readBytes(SizeUint16)
	if err != nil {
		return uint16(0), err
	}
	return dec.ch.Endianness.Uint16(b), nil
}