Как и многие из моих лучших идей, ответ пришел ко мне, когда я лежал в постели, ожидая, что засну (в то время больше нечего делать, чем думать).
Используйте модуль!
printf("%2d\n", 1234%10); // for 4
printf("%2d\n", 1234%100); // for 34
printf("%2x\n", 1234%16); // for 2
printf("%2x\n", 1234%256); // for d2
Это не идеально, потому что он не может обрезаться слева (например, 12
вместо 34
), но работает для основных вариантов использования.Например:
// print a decimal ruler
for (int i=0; i<36; i++)
printf("%d", i%10);