package util import ( "encoding/binary" "io" ) var EndianNess = binary.LittleEndian func ReadUint8(reader io.Reader) (val uint8, err error) { if br, ok := reader.(io.ByteReader); ok { return br.ReadByte() } var protocol [1]byte _, err = reader.Read(protocol[:1]) val = protocol[0] return } func ReadByte(reader io.Reader) (val byte, err error) { return ReadUint8(reader) } func ReadUint16(reader io.Reader) (val uint16, err error) { var protocol [2]byte _, err = reader.Read(protocol[:2]) val = EndianNess.Uint16(protocol[:2]) return } func ReadInt16(reader io.Reader) (val int16, err error) { uval, err := ReadUint16(reader) val = int16(uval) return } func ReadUint32(reader io.Reader) (val uint32, err error) { var protocol [4]byte _, err = reader.Read(protocol[:4]) val = EndianNess.Uint32(protocol[:4]) return } func ReadInt32(reader io.Reader) (val int32, err error) { uval, err := ReadUint32(reader) val = int32(uval) return } func ReadUint64(reader io.Reader) (val uint64, err error) { var protocol [8]byte _, err = reader.Read(protocol[:8]) val = EndianNess.Uint64(protocol[:8]) return } func ReadInt64(reader io.Reader) (val int64, err error) { uval, err := ReadUint64(reader) val = int64(uval) return }