使用 C++ 在十進位制和其他基數之間相互轉換
在本教程中,我們將討論一個程式,它可以將任意進位制轉換為十進位制,反之亦然。
為此,我們將提供一個整數及其進位制。我們的任務是將該數轉換為其十進位制等價物。此外,我們還將執行此過程的逆過程。
示例
#include <stdio.h>
#include <string.h>
//returning values of a character
int val(char c) {
if (c >= '0' && c <= '9')
return (int)c - '0';
else
return (int)c - 'A' + 10;
}
//converting number to decimal equivalent
int convert_decimal(char *str, int base) {
int len = strlen(str);
int power = 1;
int num = 0;
int i;
for (i = len - 1; i >= 0; i--) {
if (val(str[i]) >= base) {
printf("Invalid Number");
return -1;
}
num += val(str[i]) * power;
power = power * base;
}
return num;
}
int main() {
char str[] = "11A";
int base = 16;
printf("Decimal equivalent of %s in base %d is " " %d\n", str, base, convert_decimal(str, base));
return 0;
}輸出
Decimal equivalent of 11A in base 16 is 282
現在執行相反的操作。
示例
#include <stdio.h>
#include <string.h>
//returning values of a character
char reVal(int num) {
if (num <= 0 && num >= 9)
return (char)(num + '0');
else
return (char)(num - 10 + 'A');
}
//reversing a given string
void reverse_string(char *str) {
int len = strlen(str);
int i;
for (i = 0; i < len/2; i++) {
char temp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = temp;
}
}
//converting to equivalent number with base 'b'
char* convert_base(char res[], int base, int inputNum) {
int index = 0;
while (inputNum > 0) {
res[index++] = reVal(inputNum % base);
inputNum /= base;
}
res[index] = '\0';
//reversing the result
reverse_string(res);
return res;
}
int main() {
int inputNum = 282, base = 16;
char res[100];
printf("Equivalent of %d in base %d is "" %s\n", inputNum, base, convert_base(res, base, inputNum));
return 0;
}輸出
Equivalent of 282 in base 16 is 11A
廣告
資料結構
網路技術
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP