Есть ли PRIu128
, который ведет себя аналогично PRIu64
из <inttypes.h>
:
printf("%" PRIu64 "\n", some_uint64_value);
Или преобразование вручную по цифре:
int print_uint128(uint128_t n) {
if (n == 0) return printf("0\n");
char str[40] = {0}; // log10(1 << 128) + '\0'
char *s = str + sizeof(str) - 1; // start at the end
while (n != 0) {
if (s == str) return -1; // never happens
*--s = "0123456789"[n % 10]; // save last digit
n /= 10; // drop it
}
return printf("%s\n", s);
}
- единственный вариант?
Обратите внимание, что uint128_t
- это мой собственный typedef для __uint128_t
.