in dubbo/codec/encoder.py [0:0]
def _encode_int(value):
"""
对整数进行编码
:param value:
:return:
"""
result = []
# 超出int类型范围的值则转化为long类型
# 这里问题在于对于落在int范围内的数字,我们无法判断其是long类型还是int类型,所以一律认为其是int类型
if value > MAX_INT_32 or value < MIN_INT_32:
result.append(ord('L'))
result.extend(list(bytearray(struct.pack('!q', value))))
return result
if -0x10 <= value <= 0x2f:
result.append(value + 0x90)
elif -0x800 <= value <= 0x7ff:
result.append(0xc8 + (value >> 8))
result.append(value)
elif -0x40000 <= value <= 0x3ffff:
result.append(0xd4 + (value >> 16))
result.append(value >> 8)
result.append(value)
else:
result.append(ord('I'))
result.append(value >> 24)
result.append(value >> 16)
result.append(value >> 8)
result.append(value)
return result