示例#1
0
 def load(cls, reader: Reader) -> bytes:
     if cls.FIX_SIZE:
         size = cls.SIZE
     else:
         size = load_uvarint(reader)
     elem = bytearray(size)
     reader.readinto(elem)
     return elem
示例#2
0
 def load(cls, reader: Reader, elem_type: XmrType[T] | None = None) -> list[T]:
     if elem_type is None:
         elem_type = cls.ELEM_TYPE
     if cls.FIX_SIZE:
         size = cls.SIZE
     else:
         size = load_uvarint(reader)
     elems = []
     for _ in range(size):
         elem = elem_type.load(reader)
         elems.append(elem)
     return elems
    def test_varint(self):
        """
        Var int
        :return:
        """
        # fmt: off
        test_nums = [
            0, 1, 12, 44, 32, 63, 64, 127, 128, 255, 256, 1023, 1024, 8191,
            8192, 2**16, 2**16 - 1, 2**32, 2**32 - 1, 2**64, 2**64 - 1,
            2**72 - 1, 2**112
        ]
        # fmt: on

        for test_num in test_nums:
            writer = MemoryReaderWriter()

            dump_uvarint(writer, test_num)
            test_deser = load_uvarint(MemoryReaderWriter(writer.get_buffer()))

            self.assertEqual(test_num, test_deser)
示例#4
0
 def load(reader: Reader) -> str:
     ivalue = load_uvarint(reader)
     fvalue = bytearray(ivalue)
     reader.readinto(fvalue)
     return str(fvalue)
示例#5
0
 def load(reader: Reader) -> int:
     return load_uvarint(reader)