package leb128 import ( "io" ) // EncodeUnsigned encodes x to the unsigned Little Endian Base 128 format. func EncodeUnsigned(out io.ByteWriter, x uint64) { for { b := byte(x & 0x7f) x = x >> 7 if x != 0 { b = b | 0x80 } out.WriteByte(b) if x == 0 { break } } } // EncodeSigned encodes x to the signed Little Endian Base 128 format. func EncodeSigned(out io.ByteWriter, x int64) { for { b := byte(x & 0x7f) x >>= 7 signb := b & 0x40 last := false if (x == 0 && signb == 0) || (x == -1 && signb != 0) { last = true } else { b = b | 0x80 } out.WriteByte(b) if last { break } } }