def process_compact_bytes(self): compact_byte = self.get_next_bytes(1) try: byte_mod = compact_byte[0] % 4 except IndexError: raise InvalidScaleTypeValueException("Invalid byte for Compact") if byte_mod == 0: self.compact_length = 1 elif byte_mod == 1: self.compact_length = 2 elif byte_mod == 2: self.compact_length = 4 else: self.compact_length = int(5 + (compact_byte[0] - 3) / 4) if self.compact_length == 1: self.compact_bytes = compact_byte elif self.compact_length in [2, 4]: self.compact_bytes = compact_byte + self.get_next_bytes( self.compact_length - 1) else: self.compact_bytes = self.get_next_bytes(self.compact_length - 1) return self.compact_bytes
def get_next_bool(self) -> bool: data = self.get_next_bytes(1) if data not in [b'\x00', b'\x01']: raise InvalidScaleTypeValueException('Invalid value for datatype "bool"') return data == b'\x01'