Sha256: 76ff0d397f831204db58763d2b332d1355a9e3ef714ab5eb69ce8bf1b882aceb
Contents?: true
Size: 639 Bytes
Versions: 129
Compression:
Stored size: 639 Bytes
Contents
EIGHTBITMASK = 0x80 SEVENBITSMASK = 0x7f def encode_single(n): bytes_ = [n & SEVENBITSMASK] n >>= 7 while n > 0: bytes_.append(n & SEVENBITSMASK | EIGHTBITMASK) n >>= 7 return bytes_[::-1] def encode(numbers): return sum((encode_single(n) for n in numbers), []) def decode(bytes_): values = [] n = 0 for i, byte in enumerate(bytes_): n <<= 7 n += (byte & SEVENBITSMASK) if byte & EIGHTBITMASK == 0: values.append(n) n = 0 elif i == len(bytes_) - 1: raise ValueError('incomplete byte sequence') return values
Version data entries
129 entries across 129 versions & 1 rubygems