def pack(self, value=None): """Pack the value as a binary representation. If the passed value (or the self._value) is zero (int), then the pack will assume that the value to be packed is '00:00:00:00:00:00'. Returns bytes: The binary representation. Raises: struct.error: If the value does not fit the binary format. """ if isinstance(value, type(self)): return value.pack() if value is None: value = self._value if value == 0: value = '00:00:00:00:00:00' value = value.split(':') try: return struct.pack('!6B', *[int(x, 16) for x in value]) except struct.error as err: msg = "HWAddress error. " msg += "Class: {}, struct error: {} ".format( type(value).__name__, err) raise exceptions.PackException(msg)
def pack(self, value=None): """Pack the value as a binary representation. If the value is None the self._value will be used to pack. Args: value (str): IP Address with ipv4 format. Returns bytes: The binary representation. Raises: struct.error: If the value does not fit the binary format. """ if isinstance(value, type(self)): return value.pack() if value is None: value = self._value if value.find('/') >= 0: value = value.split('/')[0] try: value = value.split('.') return struct.pack('!4B', *[int(x) for x in value]) except struct.error as err: msg = "IPAddress error. " msg += "Class: {}, struct error: {} ".format( type(value).__name__, err) raise exceptions.PackException(msg)
def pack(self, value=None): """Pack the value as a binary representation. Returns: bytes: The binary representation. """ if isinstance(value, type(self)): return value.pack() if value is None: value = self else: container = type(self)(items=None) container.extend(value) value = container bin_message = b'' try: for item in value: bin_message += item.pack() return bin_message except exceptions.PackException as err: msg = "{} pack error: {}".format(type(self).__name__, err) raise exceptions.PackException(msg)
def pack(self, value=None): """Pack the value as a binary representation. Returns: bytes: The binary representation. Raises: struct.error: If the value does not fit the binary format. """ if isinstance(value, type(self)): return value.pack() try: if value is None: value = self.value packed = struct.pack(self._fmt, bytes(value, 'ascii')) return packed[:-1] + b'\0' # null-terminated except struct.error as err: msg = "Char Pack error. " msg += "Class: {}, struct error: {} ".format( type(value).__name__, err) raise exceptions.PackException(msg)