读取一个long类型的数字 :return:
(self)
| 304 | |
| 305 | @ranges((0xd8, 0xff), (0x38, 0x3f), 0x59, ord('L')) |
| 306 | def read_long(self): |
| 307 | """ |
| 308 | 读取一个long类型的数字 |
| 309 | :return: |
| 310 | """ |
| 311 | value = self.read_byte() |
| 312 | if 0xd8 <= value <= 0xef: |
| 313 | result = value - 0xe0 |
| 314 | elif 0xf0 <= value <= 0xff: |
| 315 | result = ((value - 0xf8) << 8) | self.read_byte() |
| 316 | elif 0x38 <= value <= 0x3f: |
| 317 | i = (value - 0x3c) << 16 |
| 318 | i |= self.read_byte() << 8 |
| 319 | i |= self.read_byte() |
| 320 | result = i |
| 321 | elif value == 0x59: |
| 322 | result = unpack('!i', self.read_bytes(4))[0] |
| 323 | elif value == ord('L'): |
| 324 | result = unpack('!q', self.read_bytes(8))[0] |
| 325 | else: |
| 326 | raise HessianTypeError('{0} is not long type'.format(value)) |
| 327 | return result |
| 328 | |
| 329 | @ranges(ord('N')) |
| 330 | def read_null(self): |
nothing calls this directly
no test coverage detected