概述
题目描述
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
注意:
十六进制中所有字母(a-f)都必须是小写。
十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。
给定的数确保在32位有符号整数范围内。
不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。
示例 1:
输入:
26
输出:
“1a”
示例 2:
输入:
-1
输出:
“ffffffff”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal
算法思路
10进制先转为2进制,每4位2进制组成16进制的一个数字。num&0xf可以做到每4位分割。将结果存到字符串,最后记得翻转字符串得到结果。
32位2进制转换为16进制有8位,所以判断是否要进行转换,有符号数字移位之后如果字符串长度<8表示没转换完,无符号数字移位之后补0,则转换完成的num==0,判断条件应为sb.length()<8&&num!=0
示例代码
class Solution {
public String toHex(int num) {
if (num == 0)
return "0";
char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
StringBuilder sb = new StringBuilder();
while (sb.length() < 8 && num != 0) {
sb.append(chars[num & 0xf]);
num >>= 4;
}
return sb.reverse().toString();
}
}
最后
以上就是魁梧朋友为你收集整理的LeetCode405 10进制转16进制的全部内容,希望文章能够帮你解决LeetCode405 10进制转16进制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复