in dubbo/codec/decoder.py [0:0]
def read_long(self):
"""
读取一个long类型的数字
:return:
"""
value = self.read_byte()
if 0xd8 <= value <= 0xef:
result = value - 0xe0
elif 0xf0 <= value <= 0xff:
result = ((value - 0xf8) << 8) | self.read_byte()
elif 0x38 <= value <= 0x3f:
i = (value - 0x3c) << 16
i |= self.read_byte() << 8
i |= self.read_byte()
result = i
elif value == 0x59:
result = unpack('!i', self.read_bytes(4))[0]
elif value == ord('L'):
result = unpack('!q', self.read_bytes(8))[0]
else:
raise HessianTypeError('{0} is not long type'.format(value))
return result