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

Version Path
trackler-2.2.1.180 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.179 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.178 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.177 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.176 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.175 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.174 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.173 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.172 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.171 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.170 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.169 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.167 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.166 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.165 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.164 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.163 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.162 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.161 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.160 tracks/python/exercises/variable-length-quantity/example.py