Najszybsza metoda konwersji bazy?

Obecnie pracuję nad projektem, który wymaga, aby liczba całkowita była konwertowana na ciąg 62 bazowy wiele razy na sekundę. Im szybciej ta konwersja zostanie zakończona, tym lepiej.

Problem polega na tym, że mam trudności z szybkim uzyskaniem własnych metod konwersji bazyi niezawodny. Jeśli używam ciągów, jest on ogólnie niezawodny i działa dobrze, ale jest powolny. Jeśli korzystam z tablic char, jest to zazwyczaj dużo szybsze, ale jest też bardzo niechlujne i zawodne. (Powoduje uszkodzenie sterty, porównanie ciągów, które powinny pasować, zwracają negatywne itd.)

Jaki jest najszybszy i najbardziej niezawodny sposób konwersji z bardzo dużej liczby całkowitej na klucz 62? W przyszłości planuję wykorzystać kod SIMD w mojej aplikacji, więc czy ta operacja jest w ogóle równoległa?

EDIT: Ta operacja jest wykonywana kilka milionów razy na sekundę; jak tylko operacja się zakończy, zaczyna się od nowa jako część pętli, więc im szybciej działa, tym lepiej. Konwertowana liczba całkowita ma dowolny rozmiar i może być tak duża jak 128-bitowa liczba całkowita (lub większa).

EDYCJA: To jest funkcja, której aktualnie używam.

char* charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int charsetLength = (int)(strlen(charset));

//maxChars is an integer specifying the maximum length of the key
char* currentKey = new char[maxChars];

void integerToKey(unsigned long long location)
{
    unsigned long long num = location;
    int i = 0;

    for(; num > 0; i++)
    {
            currentKey[i] = charset[num % (charsetLength)];
            num /= charsetLength + 1;
    }

    currentKey[i + 1] = '\0';
}

Wyrzuciłem to z klasy, która jest częścią mojej aplikacji, a część kodu jest zmodyfikowana tak, że ma sens bez swojej klasy.

questionAnswers(8)

yourAnswerToTheQuestion