61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
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
|
|
}
|