code: def _write(self, f):
          
          log.debug("writing ndef record at offset {0}".format(f.tell()))
  
          record_type = self.type
          record_name = self.name
          record_data = self.data
          
          if record_type == '':
              header_flags = 0; record_name = ''; record_data = ''
          elif record_type.startswith("urn:nfc:wkt:"):
              header_flags = 1; record_type = record_type[12:]
          elif re.match(r'[a-zA-Z0-9-]+/[a-zA-Z0-9-+.]+', record_type):
              header_flags = 2; record_type = record_type
          elif re.match(r'[a-zA-Z][a-zA-Z0-9+-.]*://', record_type):
              header_flags = 3; record_type = record_type
          elif record_type.startswith("urn:nfc:ext:"):
              header_flags = 4; record_type = record_type[12:]
          elif record_type == 'unknown':
              header_flags = 5; record_type = ''
          elif record_type == 'unchanged':
              header_flags = 6; record_type = ''
  
          type_length = len(record_type)
          data_length = len(record_data)
          name_length = len(record_name)
  
          if self._message_begin:
              header_flags |= 0x80
          if self._message_end:
              header_flags |= 0x40
          if data_length < 256:
              header_flags |= 0x10
          if name_length > 0:
              header_flags |= 0x08
  
          if data_length < 256:
              f.write(struct.pack(">BBB", header_flags, type_length, data_length))
          else:
              f.write(struct.pack(">BBL", header_flags, type_length, data_length))
          if name_length > 0:
              f.write(struct.pack(">B", name_length))
  
          f.write(record_type)
          f.write(record_name)
          f.write(record_data)
docs: Serialize an NDEF record to a file-like object.