[LeetCode] 405. Convert a Number to Hexadecimal

来源:互联网 发布:excel多列数据找相同 编辑:程序博客网 时间:2024/06/07 12:11
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, [two’s complement](https://en.wikipedia.org/wiki/Two%27s_complement) method is used.Note:1. All letters in hexadecimal (`a-f`) must be in lowercase.2. The hexadecimal string must not contain extra leading `0`s. If the number is zero, it is represented by a single zero character `’0’`; otherwise, the first character in the hexadecimal string will not be the zero character.3. The given number is guaranteed to fit within the range of a 32-bit signed integer.4. You must not use any method provided by the library which converts/formats the number to hex directly.Example 1:
Input:26Output:"1a"
Example 2:
Input:-1Output:"ffffffff"
class Solution {public:    string toHex(int num) {        string hex;        char map[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};        unsigned int bitmask = 0xf0000000;        int offset = 7;        while (bitmask) {            char c = map[(num & bitmask) >> (4 * offset)];            if ((c == '0' && !hex.empty()) || c != '0')                hex += c;            bitmask = bitmask >> 4;            offset--;        }        if (hex.empty())            hex += '0';        return hex;     }};

这里写图片描述
这里写图片描述

原创粉丝点击