def encode_num(num): if num == 0: return b'' abs_num = abs(num) negative = num < 0 result = bytearray() while abs_num: result.append(abs_num & 0xff) abs_num >>= 8 if result[-1] & 0x80: if negative: result.append(0x80) else: result.append(0) elif negative: result[-1] != 0x80 return bytes(result) def decode_num(element): if element == b'': return 0 big_endian = element[::-1] if big_endian[0] & 0x80: negative = True result = big_endian[0] & 0x7f else: negative = False result = big_endian[0] for c in big_endian[1:]: result <<= 8 result += c if negative: return -result else: return result def op_0(stack): stack.append(encode_num(0)) return True