code: def unpack(self, buff, offset=0):
          
          try:
              begin = offset
              end = begin + self.length
              unpacked_data = struct.unpack(self._fmt, buff[begin:end])[0]
          except struct.error:
              raise Exception("%s: %s" % (offset, buff))
  
          self._value = unpacked_data.decode('ascii').rstrip('\0')
docs: Unpack a binary message into this object's attributes.
  
          Unpack the binary value *buff* and update this object attributes based
          on the results.
  
          Args:
              buff (bytes): Binary data package to be unpacked.
              offset (int): Where to begin unpacking.
  
          Raises:
              Exception: If there is a struct unpacking error.