[BACK]Return to utils.py CVS log [TXT][DIR] Up to [contributed] / MumbleDicebot

Annotation of MumbleDicebot/utils.py, Revision 1.1.1.1

1.1       rubenllo    1: def parse_varint(data):
                      2:     barray = bytearray(data[:10])
                      3:     byte = barray.pop(0)
                      4:     if byte >> 7 == 0:
                      5:         varint, rem = byte & 127, 0
                      6:     elif byte >> 6 == 2:
                      7:         varint, rem = byte & 63, 1
                      8:     elif byte >> 5 == 6:
                      9:         varint, rem = byte & 31, 2
                     10:     elif byte >> 4 == 14:
                     11:         varint, rem = byte & 15, 3
                     12:     elif byte >> 2 == 60:
                     13:         varint, rem = 0, 4
                     14:     elif byte >> 2 == 61:
                     15:         varint, rem = 0, 8
                     16:     elif byte >> 2 == 62:
                     17:         varint, data = parse_varint(data[1:])
                     18:         return -varint, data
                     19:     elif byte >> 2 == 63:
                     20:         varint, rem = ~byte | 0xFC, 0
                     21:
                     22:     for i in range(rem):
                     23:         varint <<= 8
                     24:         varint += barray.pop(0)
                     25:
                     26:     return varint, data[rem+1:]

CVSweb