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

Version Path
trackler-2.2.1.49 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.48 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.47 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.46 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.45 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.44 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.43 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.42 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.41 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.40 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.39 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.38 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.37 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.36 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.35 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.34 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.33 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.32 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.31 tracks/python/exercises/variable-length-quantity/example.py
trackler-2.2.1.30 tracks/python/exercises/variable-length-quantity/example.py