Вам просто нужно увеличить счетчик, а затем преобразовать число в базу (размер массива символов)
Вот пример, который делает нормальные числа до основания 16.
http://www.daniweb.com/code/snippet217243.html
Вы должны быть в состоянии заменить
char NUMS[] = "0123456789ABCDEF";
с вашим набором символов и выясните это оттуда. Это может не сгенерировать достаточно большую строку, используя uint, но вы сможете разбить ее на куски оттуда.
Представьте, что ваш массив символов был "BAR", поэтому вам нужно преобразовать в число 3 основание, используя ваши собственные символы вместо 0 1 и 2.
Для этого нужно выполнить модуль для определения персонажа, а затем разделить на основание, пока число не станет равным нулю. Вместо этого вы должны повторять «B» до тех пор, пока не достигнете длины строки, вместо того, чтобы остановиться, когда вы достигнете нуля.
Например: строка из четырех символов, сгенерированная из числа 13:
- 14% 3 = 2, поэтому он будет выдвигать charSet [2] в начало пустой строки, "R";
- Затем он делится на 3, что с использованием целочисленного математического выражения = 4. 4% 3 снова равно 1, поэтому «А».
- Он снова разделится на 3, (1) 1% 3 равно 1, поэтому «А».
- Он снова разделится на 3, (0) - Пример на этом остановится, но, поскольку мы генерируем строку, мы продолжаем нажимать 0 "B", пока не достигнем 4 наших 4 символов.
Конечный выход: BAAR
Для подхода, который может генерировать намного большие строки, вы можете использовать массив целых чисел размером с вашу строку (назовите его positions
), инициализировать все целые числа равными нулю и делать что-то подобное на каждой итерации: 1032 *
i = 0;
positions[i]++;
while (positions[i] == base)
{
positions[i] = 0;
positions[++i]++;
}
Затем вы должны пройти через весь массив и построить строку, используя charSet [позиции [i]], чтобы определить, что представляет собой каждый символ.