Если число уже преобразовано в целое число (т. Е. Основание 10)
// Supports up to base 36
char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char FindPlace(int number, int base, int digit)
{
if(digit < 0) return 0;
// Essentially divide the number by [base] to the [digit] power
for(i=0; i<digit; i++)
{
number /= base;
}
// TODO: Verify that the digit is in range of digits
return digits[number % base];
}
(0
дает вам самую правую цифру, 1
дает вам самую правую цифру и т. Д.)
Я вернул цифру как char
, чтобы учесть базы больше 10.
Обратите внимание, что если вы хотите разрешить пользователю вводить нужную цифру как "1
s место, 10
s место, 100
s место" или "1
s, 16
s, 256
s ", вы просто делаете
digit = log(PlaceValue, base);
или переписать код на
char FindPlace(int number, int base, int digitAsBaseToAPower)
{
// TODO: Error checking
return digits[(number / digitAsBaseToAPower) % base];
}