编写一个函数,传入一个十进制的正整数,将十进制整数转换为十六进制的字符串并返回。(十六进制字符串中的字母全部大写)
输入描述:
键盘输入一个十进制的正整数
输出描述:
输出该十进制整数转换后的十六进制字符串
示例1
输入:
162
复制输出:
A2
复制
示例2
输入:
50
复制输出:
32
复制
示例3
输入:
501
复制输出:
1F5
思路很简单,就是按照十进制转十六进制的算法来算,除以16取余,关键是灵活调用string类的各种函数来完成插入的工作。
具体来说:
先建立一个空的string字符串hex用来存储我们变换后的十六进制数,之后我们对十进制数进行除以16取余的操作,这里需要一个循环,先判断和16取余后的数是否小于10,如果小于10,说明是数字,加上‘0’就可以变成相应的数字字符,如果不是小于10,说明要变成字母,加上‘A'就可以变成相应的字母了,然后将该字符用insert函数插入字符串hex的开头,然后将十进制数除以16后继续循环,直到十进制数为0终止循环。
#include<iostream>
#include<string>
using namespace std;
int main(){
string hex;
char bit;
int deci;
cin>>deci;
do{
if(deci%16<10)
bit=deci%16+'0';
else
bit=deci%16+'A'-10;
hex.insert(hex.begin(),bit);
deci/=16;
}while(deci);
cout<<hex;
}