byteio - stickylittleendianreader_varint.go
1 package byteio
2
3 // ReadUintX reads an unsigned integer that was encoded using a variable number
4 // of bytes.
5 func (e *StickyLittleEndianReader) ReadUintX() uint64 {
6 var (
7 n int
8 val uint64
9 )
10
11 for n < 9 {
12 c, _ := e.ReadByte()
13 val += uint64(c&0xff) << uint(n*7)
14 n++
15
16 if c&0x80 == 0 {
17 break
18 }
19 }
20
21 return val
22 }
23
24 // ReadIntX reads an integer that was encoded using a variable number of bytes.
25 func (e *StickyLittleEndianReader) ReadIntX() int64 {
26 return unzigzag(e.ReadUintX())
27 }
28