C++零基础100题-数字转换成16进制数

129 阅读1分钟

题目链接: 405. 数字转换为十六进制数 - 力扣(LeetCode)

题目描述

image.png

解体思路

  1. 首先 我们获取到一个int数字
  2. 为了方便处理负数,我们采用无符号整型的类型来存放传入进来的数
  3. 16进制每4位进行一次运算所以我们n&0xf
  4. 运算完之后我们将这4位给他去掉
  5. 返回运算之后的结果ret

代码实现

class Solution {
    char code(int n){
        if(n>=10){
            return n-10+'a';
        }else{
            return n+'0';
        }
    }
public:
    string toHex(int num) {
        unsigned int n=num;
        if(!n){
            return "0";
        }
        string ret;
        while(n){
            ret+=code(n&0xf);
            n>>=4;
        }
        reverse(ret.begin(),ret.end());
        return ret;
    }
};