Я сейчас пытаюсь преобразовать целое число в строку, и у меня возникла проблема.
Я получил код, написанный и работающий по большей части, но у него есть небольшой недостаток при переносе на следующее место. Это сложно описать, поэтому я приведу пример. Использование базы 26 с набором символов, состоящим из строчного алфавита:
0 = "а"
1 = "b"
2 = "с"
...
25 = "z"
26 = "ba" (это должно быть равно "aa")
В некоторых ситуациях кажется, что символ пропускается на нулевом месте в наборе символов.
Меня смущает то, что я не вижу ничего плохого в своем коде. Я работаю над этим слишком долго и до сих пор не могу понять.
char* charset = (char*)"abcdefghijklmnopqrstuvwxyz";
int charsetLength = strlen(charset);
unsigned long long num = 5678; // Some random number, it doesn't matter
std::string key
do
{
unsigned int remainder = (num % charsetLength);
num /= charsetLength;
key.insert(key.begin(), charset[remainder]);
} while(num);
У меня такое ощущение, что функция срабатывает по модулю, возвращая ноль, но я так долго работал над этим, я не могу понять, как это происходит. Любые предложения приветствуются.
РЕДАКТИРОВАТЬ: факт, что сгенерированная строка имеет младший порядок, не имеет значения для моего приложения.