23 lines
508 B
Go
23 lines
508 B
Go
package binaryutil
|
|
|
|
// VarintSize returns the number of bytes to varint encode x.
|
|
// This code is copied from encoding/binary.PutVarint() with the buffer removed.
|
|
func VarintSize(x int64) int {
|
|
ux := uint64(x) << 1
|
|
if x < 0 {
|
|
ux = ^ux
|
|
}
|
|
return UvarintSize(ux)
|
|
}
|
|
|
|
// UvarintSize returns the number of bytes to uvarint encode x.
|
|
// This code is copied from encoding/binary.PutUvarint() with the buffer removed.
|
|
func UvarintSize(x uint64) int {
|
|
i := 0
|
|
for x >= 0x80 {
|
|
x >>= 7
|
|
i++
|
|
}
|
|
return i + 1
|
|
}
|