40 lines
816 B
Go
40 lines
816 B
Go
|
// Package util contains small helpers used across the repo
|
||
|
package util
|
||
|
|
||
|
import (
|
||
|
"encoding/binary"
|
||
|
)
|
||
|
|
||
|
// BigEndianUint24 returns the value of a big endian uint24
|
||
|
func BigEndianUint24(raw []byte) uint32 {
|
||
|
if len(raw) < 3 {
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
rawCopy := make([]byte, 4)
|
||
|
copy(rawCopy[1:], raw)
|
||
|
return binary.BigEndian.Uint32(rawCopy)
|
||
|
}
|
||
|
|
||
|
// PutBigEndianUint24 encodes a uint24 and places into out
|
||
|
func PutBigEndianUint24(out []byte, in uint32) {
|
||
|
tmp := make([]byte, 4)
|
||
|
binary.BigEndian.PutUint32(tmp, in)
|
||
|
copy(out, tmp[1:])
|
||
|
}
|
||
|
|
||
|
// PutBigEndianUint48 encodes a uint64 and places into out
|
||
|
func PutBigEndianUint48(out []byte, in uint64) {
|
||
|
tmp := make([]byte, 8)
|
||
|
binary.BigEndian.PutUint64(tmp, in)
|
||
|
copy(out, tmp[2:])
|
||
|
}
|
||
|
|
||
|
// Max returns the larger value
|
||
|
func Max(a, b int) int {
|
||
|
if a > b {
|
||
|
return a
|
||
|
}
|
||
|
return b
|
||
|
}
|