#include <stdio.h>
#include <string.h>
// 十进制转为n进制
void decimalToN(int decimal, int base) {
char nNumber[50];
int i = 0;
while (decimal > 0) {
int remainder = decimal % base;
if (remainder < 10) {
nNumber[i] = remainder + '0';
} else {
nNumber[i] = remainder - 10 + 'A';
}
decimal /= base;
i++;
}
printf("The converted number is: ");
for (int j = i - 1; j >= 0; j--) {
printf("%c", nNumber[j]);
}
printf("\n");
}
// n进制转为十进制
int NToDecimal(char *nNumber, int base) {
int length = strlen(nNumber);
int decimal = 0;
int power = 1;
for (int i = length - 1; i >= 0; i--) {
int digit;
if (nNumber[i] >= '0' && nNumber[i] <= '9') {
digit = nNumber[i] - '0';
} else if (nNumber[i] >= 'A' && nNumber[i] <= 'Z') {
digit = nNumber[i] - 'A' + 10;
} else if (nNumber[i] >= 'a' && nNumber[i] <= 'z') {
digit = nNumber[i] - 'a' + 10;
} else {
printf("Invalid number format!\n");
return -1;
}
decimal += digit * power;
power *= base;
}
return decimal;
}
int main() {
int decimal = 123;
int base = 16;
char nNumber[50] = "7B";
// 十进制转为n进制
decimalToN(decimal, base);
// n进制转为十进制
int convertedDecimal = NToDecimal(nNumber, base);
if (convertedDecimal != -1) {
printf("The converted decimal is: %d\n", convertedDecimal);
}
return 0;
}
c语言十进制与n进制互转
最新推荐文章于 2023-12-26 14:20:46 发布