十进制转十六进制 C++

1,201 阅读2分钟

​​携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情

题目描述

编写一个函数,传入一个十进制的正整数,将十进制整数转换为十六进制的字符串并返回。(十六进制字符串中的字母全部大写)

输入描述:

键盘输入一个十进制的正整数

输出描述:

输出该十进制整数转换后的十六进制字符串

示例1

输入:

162

复制输出:

A2

复制

示例2

输入:

50

复制输出:

32

复制

示例3

输入:

501

复制输出:

1F5

思路分析

思路很简单,就是按照十进制转十六进制的算法来算,除以16取余,关键是灵活调用string类的各种函数来完成插入的工作。

具体来说:

先建立一个空的string字符串hex用来存储我们变换后的十六进制数,之后我们对十进制数进行除以16取余的操作,这里需要一个循环,先判断和16取余后的数是否小于10,如果小于10,说明是数字,加上‘0’就可以变成相应的数字字符,如果不是小于10,说明要变成字母,加上‘A'就可以变成相应的字母了,然后将该字符用insert函数插入字符串hex的开头,然后将十进制数除以16后继续循环,直到十进制数为0终止循环。

AC代码

#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;
}