Sha256: d3b6837b1148e7fdde5f800353949678f48c8986818853e0011a2bfd0cfdcf47
Contents?: true
Size: 633 Bytes
Versions: 102
Compression:
Stored size: 633 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
102 entries across 102 versions & 1 rubygems