题解 | #十进制整数转十六进制字符串#
十进制整数转十六进制字符串
https://www.nowcoder.com/practice/80eca5f47e6f473893151b863b25aba1
#include <iostream>
#include <string>
using namespace std;
string toHexString(int n);
int main() {
int n;
cin >> n;
string hexStr = toHexString(n);
cout << hexStr << endl;
return 0;
}
string toHexString(int n) {
// write your code here......
string res = "";
while (n!=0) {
int mod = n%16;
if (mod>=0&&mod<=9) {
char c = mod +'0';
res = c +res;
}else{
char c = mod-10+'A';
res = c+res;
}
n = n/16;
}
return res;
}
/*初始化一个空字符串res,用于存储最终的十六进制字符串。
进入while循环,因为n(当前为162)不为0。
计算n对16取余的结果,即mod = 162 % 16。这个结果是2。
因为mod(2)在0到9之间,执行if语句中的代码块。
将mod转换为相应的字符,即c = '2'(字符’0’的ASCII码是48,所以2 + 48得到字符’2’)。
将新计算的字符c添加到res字符串的前面,此时res变为"2"。
将n除以16,即n = 162 / 16,得到10。
因为n(10)仍然不为0,循环继续。
重复步骤3-7,这次mod是10,对应的字符是’A’(因为10 - 10 + 'A'等于’A’),所以res变为"A2"。
再次将n除以16,得到0。
因为n现在为0,循环结束。
返回最终的十六进制字符串res,即"A2"
