题解 | #十进制整数转十六进制字符串#

十进制整数转十六进制字符串

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"

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务