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