Skip to content

Commit

Permalink
add byte reader
Browse files Browse the repository at this point in the history
  • Loading branch information
zelenin committed Oct 15, 2022
1 parent 7364363 commit 9d63629
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions reader/byte.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package reader

import (
"encoding/binary"
"io"
)

func ReadBytes(r io.Reader, size int) ([]byte, error) {
buf := make([]byte, size)

_, err := io.ReadFull(r, buf)
if err != nil {
return nil, err
}

return buf, nil
}

func ReadUint8(r io.Reader) (uint8, error) {
b, err := ReadBytes(r, 1)
if err != nil {
return 0, err
}

return b[0], nil
}

func ReadUint16(r io.Reader, byteOrder binary.ByteOrder) (uint16, error) {
b, err := ReadBytes(r, 2)
if err != nil {
return 0, err
}

return byteOrder.Uint16(b), nil
}

func ReadUint32(r io.Reader, byteOrder binary.ByteOrder) (uint32, error) {
b, err := ReadBytes(r, 4)
if err != nil {
return 0, err
}

return byteOrder.Uint32(b), nil
}

func ReadUint64(r io.Reader, byteOrder binary.ByteOrder) (uint64, error) {
b, err := ReadBytes(r, 8)
if err != nil {
return 0, err
}

return byteOrder.Uint64(b), nil
}

0 comments on commit 9d63629

Please sign in to comment.