public DataType[] convertToInputDataTypes(List<FormatArgument> formatArguments) {
		if (formatArguments == null) {
			return null;
		}

		List<DataType> dataTypesList = new ArrayList<>();
		for (int i = 0; i < formatArguments.size(); i++) {
			FormatArgument argument = formatArguments.get(i);
			// * means to skip
			if (argument.getConversionSpecifier().equals("*")) {
				if (formatArguments.get(i + 1).getConversionSpecifier().equals("*")) {
					return null;
				}
				++i;
				continue;
			}
			DataType dt = convertPairToDataType(argument.getLengthModifier(),
				argument.getConversionSpecifier());
			if (dt == null) {
				return null;
			}
			if (!(dt instanceof PointerDataType) ||
				isVoidPointer(argument.getConversionSpecifier())) {
				dataTypesList.add(dataTypeManager.getPointer(dt));
			}
			else {
				dataTypesList.add(dt);
			}
		}
		return dataTypesList.stream().toArray(size -> new DataType[size]);
	}
Skips a series of numbers (field width or precision) within a format String.
returns the index of the format String at the last digit before another
non-digit character

@param formatString format String
@param i      index into formatStr
@return new index into formatString
Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/plugin/core/string/variadic/FormatStringParser.java