Как преобразовать 128-битное целое число в десятичную строку ascii в C?

Я пытаюсь преобразовать 128-битное целое число без знака, хранящееся в виде массива из 4 беззнаковых целых чисел, в десятичное строковое представление в C:

unsigned int src[] = { 0x12345678, 0x90abcdef, 0xfedcba90, 0x8765421 };
printf("%s", some_func(src)); // gives "53072739890371098123344"

(Приведенные выше примеры ввода и вывода полностью вымышлены; я понятия не имею, что этот ввод будет производить.)

Если бы я перешел к шестнадцатеричной, двоичной или восьмеричной системе, это было бы простым делом масок и битовых сдвигов для удаления наименее значимых символов. Однако мне кажется, что мне нужно делать десятичное деление. К сожалению, я не могу вспомнить, как это сделать для нескольких int, а система, которую я использую, не поддерживает типы данных, превышающие 32-битные, поэтому использование 128-битного типа невозможно. Использование другого языка также невозможно, и я бы предпочел избежать использования библиотеки с большими числами только для этой одной операции.

13
задан Silverhalide 5 November 2011 в 21:29
поделиться