栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode 每日一题 2021/10/2 405. 数字转换为十六进制数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 每日一题 2021/10/2 405. 数字转换为十六进制数

leetcode 每日一题 2021/10/2 405. 数字转换为十六进制数 解题思路:

​ 正数的16进制很好计算。

​ 负数的16进制通过补码运算

​ 该题中负数对应的补码为:pow(2,32) -abs(num1); num1<0;

​ 需要注意的是pow(2,32)次方已经超过了int的范围。

代码:
class Solution {

public:

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

  string toHex(int num) {

​    long long num1 = (long long)num;

  if(num1 == 0){

​    return "0";

  }

  if(num1 < 0){

​    num1 = pow(2,32) -abs(num1);//计算得到负数的补码

  }

  string s;

  while(num1){ //进制转换

​    int t = num1%16;

​    s.push_back(arr[t]);

​    num1 = num1/16;

  }

  for(int i=0;i 

想一起在leetcode学习的小伙伴可以加我的QQ:2117588986

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号