405. Convert a Number to Hexadecimal(easy)

Easy

31379FavoriteShare

Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s 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 0s. 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:
26
 
Output:
"1a"

Example 2:

Input:
-1
 
Output:
"ffffffff"

 

C++:

/*
 * @Autor: SourDumplings
 * @Date: 2019-09-23 08:50:45
 * @Link: https://github.com/SourDumplings/
 * @Email: changzheng300@foxmail.com
 * @Description: https://leetcode.com/problems/convert-a-number-to-hexadecimal/
 * 
 * 采用位运算法,16进制相当于每四位作为一个数字
 * 将32位数每四位为一组转换为16进制数字即可,与15坐位与再右移4位做8次
 */

class Solution
{
public:
    string toHex(int num)
    {
        if (num == 0)
        {
            return "0";
        }

        int hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
                       'b', 'c', 'd', 'e', 'f'};
        string res(8, '0');
        for (int i = 0; i < 8; i++)
        {
            res[7 - i] = hex[num & 15];
            num >>= 4;
        }
        int j = 0;
        while (res[j] == '0')
        {
            ++j;
        }
        return res.substr(j);
    }
};

 Java:

/*
 * @Autor: SourDumplings
 * @Date: 2019-09-23 09:03:33
 * @Link: https://github.com/SourDumplings/
 * @Email: changzheng300@foxmail.com
 * @Description: https://leetcode.com/problems/convert-a-number-to-hexadecimal/
 */

class Solution
{
    public String toHex(int num)
    {
        if (num == 0)
        {
            return "0";
        }

        char[] hex =
        { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

        char[] res = new char[8];
        for (int i = 0; i < 8; i++)
        {
            res[7 - i] = hex[num & 15];
            num >>= 4;
        }
        int j = 0;
        while (res[j] == '0')
        {
            ++j;
        }
        return String.copyValueOf(res, j, 8 - j);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值