输入任意一个进制的数,输出其它三种进制的数。
输入:十进制68.3125
输出:二进制:1000100.0101
八进制:104.24
十六进制:44.5
反之输入:
输入:二进制:1000100.0101
输出:十进制68.3125
八进制:104.24
十六进制:44.5
十六进制和小数部分太让人头痛了
https://blog.csdn.net/weixin_44251129/article/details/88541624 原理
https://www.wendangwang.com/doc/ead0ea9875d5e76aa7dbcdbd 代码
以下是一个简单的 C++ 程序,用于将二进制、八进制、十进制和十六进制字符串相互转换:
#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
string toBinary(int n) {
string bin = "";
while (n) {
bin += n % 2 ? "1" : "0";
n /= 2;
}
reverse(bin.begin(), bin.end());
return bin;
}
string toOctal(int n) {
string oct = "";
while (n) {
oct = to_string(n % 8) + oct;
n /= 8;
}
return oct;
}
string toDecimalString(int n) {
return to_string(n);
}
string toHex(int n) {
stringstream ss;
ss << uppercase << hex << n;
return ss.str();
}
int toDecimal(string s, int base) {
int dec = 0;
int x = 1;
for (int i = s.length() - 1; i >= 0; i--) {
int c = base == 16 && isalpha(s[i]) ? toupper(s[i]) - 'A' + 10 : (s[i] - '0');
dec += c * x;
x *= base;
}
return dec;
}
int main() {
cout << "Enter a number: ";
string num;
cin >> num;
int base = 0;
while (base != 2 && base != 8 && base != 10 && base != 16) {
cout << "Enter base (2, 8, 10, or 16): ";
cin >> base;
}
int dec = toDecimal(num, base);
cout << "Decimal: " << dec << endl
<< "Binary: " << toBinary(dec) << endl
<< "Octal: " << toOctal(dec) << endl
<< "Hexadecimal: " << toHex(dec) << endl;
return 0;
}