[LeetCode] C ++:簡単な質問ビット演算405。数値を16進数に変換する

405.16進数への数値変換

難易度122

整数を指定して、この数値を16進数に変換するアルゴリズムを記述します。負の整数の場合、通常は1の補数演算を使用します  。

注意:

  1. 16進法のすべての文字(a-f)は小文字でなければなりません。
  2. 16進文字列に余分な先行ゼロを含めることはできません。変換される数値が0の場合、それ'0'1文字で表さます。それ以外の場合、16進文字列の最初の文字は0文字ではありません。 
  3. 指定された数値は、32ビットの符号付き整数の範囲内にあることが保証されています。
  4. ライブラリが提供するメソッドを使用して、数値を16進数に直接変換またはフォーマットすることはできません。

例1:

入力:
26

出力:
「1a」

例2:

入力:
-1

出力:
"ffffffff"

暴力

class Solution {
public:
    string toHex(int num) {
        string res = "";
        if(num == 0){
            return "0";
        }
        vector<char> vec = {
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
            'a', 'b', 'c', 'd', 'e', 'f'
        };
        unsigned int n = num;
        while(n != 0){
            string tmp(1, vec[n%16]);
            res = tmp + res;
            n /= 16;
        }
        return res;
    }
};

 

おすすめ

転載: blog.csdn.net/weixin_44566432/article/details/113773231