def to_uint(array, pos=0): #byte 1 n = array[pos] if (not (n & (1 << 7))): return n, pos+1 n -= (1 << 7) #byte 2 n = n | (array[pos+1] << 7) if (not (n & (1 << 14))): return n, pos+2 n -= (1 << 14) #byte 3 n = n | (array[pos+2] << 14) if (not (n & (1 << 21))): return n, pos+3 n -= (1 << 21) #byte 4 n = n | (array[pos+3] << 21) #Negative numbers if (n & (1 << 28)): n -= (1 << 28); n = -( (~n & 0x0FFFFFFF) + 1) return n, pos+4 print to_uint([5]) print to_uint([100]) print to_uint([255, 1]) print to_uint([232, 7]) print to_uint([255, 255, 255, 255]) print to_uint([230, 250, 255, 255]) print to_uint([174, 246, 255, 255]) print to_uint([241, 177, 255, 255])