title: How to convert a 128-bit integer to a decimal ascii string in C?
body: <p>I'm trying to convert a 128-bit unsigned integer stored as an array of 4 unsigned ints to the decimal string representation in C:</p>
  
  <pre><code>unsigned int src[] = { 0x12345678, 0x90abcdef, 0xfedcba90, 0x8765421 };
  printf("%s", some_func(src)); // gives "53072739890371098123344"
  </code></pre>
  
  <p>(The input and output examples above are completely fictional; I have no idea what that input would produce.)</p>
  
  <p>If I was going to hex, binary or octal, this would be a simple matter of masks and bit shifts to peel of the least significant characters. However, it seems to me that I need to do base-10 division. Unfortunately, I can't remember how to do that across multiple ints, and the system I'm using doesn't support data types larger than 32-bits, so using a 128-bit type is not possible. Using a different language is also out, and I'd rather avoid a big number library just for this one operation.</p>