其他转换请参考博文:
C++编程积累——C++实现十进制与二进制之间的互相转换
与二进制类似,十进制转十六进制对16整除,得到的余数的倒序即为转换而成的十六进制,特别地,如果超过10以后,分别用ABCDEF或abcdef来代替10、11、12、13、14、15。
主函数main.cpp为:
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int N;
cout << "Please enter the number: ";
cin >> N;
cout << endl;
//十进制转十六进制的声明和调用
void convert_10_to_16(int num);
convert_10_to_16(N);
}
十进制转换为十六进制函数为:
#include
#include
#include
#include
#include
using namespace std;
void convert_10_to_16(int num)
{
vector ivec;
int Num = num;
while (num != 0)
{
ivec.push_back(num % 16);
num = num / 16;
}
vector::size_type sz = ivec.size();
vector ivec2;
int m = 0;
string s;
for (vector::size_type index = 0; index != sz; ++index)
{
if (ivec[sz - 1 - index] > 9)
{
m = ivec[sz - 1 - index] + 55;
s = m+'0'-'0';
ivec2.push_back(s);
}
else
{
s = ivec[sz - 1 - index] + '0';
ivec2.push_back(s);
}
}
cout << Num << "十进制转十六进制后为:";
for (auto item : ivec2)
cout << item;
cout << endl << endl;
}
运行结果:
将十六进制从右往左从零次幂开始乘以十六进制数并求和,这里需要对字母表示的数字进行转换
主函数main.cpp为:
#include
#include
#include
#include
#include
using namespace std;
int main()
{
double convert_16_to_10();
convert_16_to_10();
return 0;
}
十进制转换为十六进制函数为:
//************************************************************************************
////十六进制转换为十进制
//************************************************************************************
#include
#include
#include
#include
using namespace std;
double convert_16_to_10()
{
//输入十六进制数并存储在string变量str2中
cout << "Please enter the ShiLiuJInZhi numbers: " << endl;
char s;
string str2;
while (cin >> s)
{
str2.push_back(s);
}
double sum = 0, times;
double m;
string::size_type sz = str2.size();
for (string::size_type index = 0; index != sz; ++index)
{
//变为小写,这个思路很好
str2[index] = tolower(str2[index]);
if (str2[index] >= 'a' && str2[index] <= 'f')
{
//这里让a~f进行转换为数字字符,很奇妙
m = str2[index] - 'a' + 10;
//求幂次方
times = pow(16, (sz - 1 - index));
sum += m * times;
}
else if (isdigit(str2[index]))
{
//需要将字符类型转换为数字类型
//因为0的ASCII码是48,所以转换为相应的数字,减去48即可
m= str2[index] - 48;
times = pow(16, (sz - 1 - index));
sum += m * times;
}
else
{
cout << "无法识别的十六进制!";
break;
}
}
cout << "16进制转10进制为: ";
cout << sum << endl;
return 0;
}
运行结果: