難易度122
整数を指定して、この数値を16進数に変換するアルゴリズムを記述します。負の整数の場合、通常は1の補数演算を使用します 。
注意:
- 16進法のすべての文字(
a-f
)は小文字でなければなりません。- 16進文字列に余分な先行ゼロを含めることはできません。変換される数値が0の場合、それ
'0'
は1文字で表されます。それ以外の場合、16進文字列の最初の文字は0文字ではありません。- 指定された数値は、32ビットの符号付き整数の範囲内にあることが保証されています。
- ライブラリが提供するメソッドを使用して、数値を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;
}
};