code: def process_field(elt, ascii=False):
      
  
      # NOTE: if there is a variable defined in this field and it is different
      # from the default, we could change the value and restart.
  
      scale = np.uint8(1)
      if elt.get("type") == "bitfield" and not ascii:
          current_type = ">u" + str(int(elt.get("length")) // 8)
          scale = np.dtype(current_type).type(1)
      elif (elt.get("length") is not None):
          if ascii:
              add = 33
          else:
              add = 0
          current_type = "S" + str(int(elt.get("length")) + add)
      else:
          current_type = TYPEC[elt.get("type")]
          try:
              scale = (10 /
                       float(elt.get("scaling-factor", "10").replace("^", "e")))
          except ValueError:
              scale = (10 / np.array(
                  elt.get("scaling-factor").replace("^", "e").split(","),
                  dtype=np.float))
  
      return ((elt.get("name"), current_type, scale))
docs: Process a 'field' tag.