title: Fastest base conversion method?
body: <p>Right now I'm working on a project which requires an integer to be converted to a base 62 string many times a second. The faster this conversion is completed, the better.</p>
  
  <p>The problem is that I'm having a hard time getting my own base conversion methods to be fast <em>and</em> reliable. If I use strings, it's generally reliable and works well, but it's slow. If I use char arrays, it's generally much faster, but it's also very messy, and unreliable. (It produces heap corruption, comparison of strings that should match return a negative, etc.)</p>
  
  <p>So what's the fastest and most reliable way of converting from a very large integer to a base 62 key? In the future, I plan on utilizing SIMD model code in my application, so is this operation parallelizable at all?</p>
  
  <p>EDIT: This operation is performed several million times a second; as soon as the operation finishes, it begins again as part of a loop, so the faster it runs, the better. The integer being converted is of arbitrary size, and can easily be as large as a 128 bit integer (or larger).</p>
  
  <p>EDIT: This is the function I am currently using.</p>
  
  <pre><code>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 &gt; 0; i++)
      {
              currentKey[i] = charset[num % (charsetLength)];
              num /= charsetLength + 1;
      }
  
      currentKey[i + 1] = '\0';
  }
  </code></pre>
  
  <p>I ripped this out of a class that is part of my application, and some of the code is modified so that it makes sense sans its owning class.</p>