For example,
package main
import "fmt"
func readUIntLE(buf []byte, offset, byteLength int) uint64 {
var n uint64
buf = buf[offset : offset+byteLength]
if len(buf) > 8 {
buf = buf[:8]
}
for i, b := range buf {
n += uint64(b) << uint(8*i)
}
return n
}
func main() {
buf := []byte{2, 4, 8, 16, 32, 64, 128, 255}
fmt.Println(buf)
fmt.Println(readUIntLE(buf, 0, 4))
fmt.Println(readUIntLE(buf, 0, len(buf)))
fmt.Println(readUIntLE(buf, len(buf)-1, 1))
}
Output:
[2 4 8 16 32 64 128 255]
268960770
18410785783142679554
255