Newer
Older
package decode
import (
"bytes"
"encoding/binary"
)
// Decode reads fields from a buffer
func Decode(buf *bytes.Buffer, fields []interface{}) error {
var err error
for _, field := range fields {
err = binary.Read(buf, binary.BigEndian, field)
if err != nil {
return errors.Wrap(err, "Unable to read from buffer")
func DecodeUint8(buf *bytes.Buffer, x *uint8) error {
y, err := buf.ReadByte()
if err != nil {
return err
}
*x = y
return nil
}
func DecodeUint16(buf *bytes.Buffer, x *uint16) error {
a, err := buf.ReadByte()
if err != nil {
return err
}
b, err := buf.ReadByte()
if err != nil {
return err
}
func DecodeUint32(buf *bytes.Buffer, x *uint32) error {
a, err := buf.ReadByte()
if err != nil {
return err
}
b, err := buf.ReadByte()
if err != nil {
return err
}
c, err := buf.ReadByte()
if err != nil {
return err
}
d, err := buf.ReadByte()
if err != nil {
return err
}
*x = uint32(a)<<24 + uint32(b)<<16 + uint32(c)<<8 + uint32(d)