leetcode:https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/

思路1:

  1. 数组hash存储string hex=“0123456789abcdef”;
  2. 排除0
  3. 先考虑num大于0的数,实现非常简单
  4. 考虑num小于0的数,负数存储最高为1,且INT_MIN的绝对值等于INT_MAX+1,那么需要对INT_MIN做特殊处理;对其他负数存储用补码表示,那么INT_MAX+num+1即为数字该负数位上的值,最高位为1
class Solution {
public:string toHex(int num) {string HEX ="0123456789abcdef";if (num == 0) {return "0";}bool neg = false;if (num < 0) {num = INT_MAX + num +1;neg = true;}if (num == 0) {return "80000000";}string res;while (num > 0) {int k = num%16;num = num/16;if (num == 0 && neg) { // 负数最高为做处理k += 8;}res.insert(0, 1, HEX[k]);}return res;}
};

其他思路:
1.不管num是正数还是负数,存储状态由计算机决定,负数以补码形式存储,排除存储形式干扰
2.16进制数,num数字以二进制方式存储,4位为一个16进制位,位移解决每个16进制数字
3.有符号数算数右移,正数右移超出值32次时,结果为0,负数超过则为-1,所以必须确定停止位移的条件!!!

string toHex(int num) {if (num == 0) {return "0";}string hex = "0123456789abcdef";string res;while (num && res.size() < 8) { // num 不为0且res.size()小于8res = hex[num&0xf] + res;num >>= 4; // 负数算数右移超过int类型大小后,num结果为0xffffffff,即-1}return res;
}

数字转化为16进制数相关推荐

  1. 将字符串转化为16进制数

    在有些情况下,想得到n个16进制数.然而你只能得到一个字符串数组,数组中的数据都是文本形式. 例如char *s = "1b5050508af890ef50"; 我想得到的是16进 ...

  2. [转载] python字符串转化为16进制数_python实用知识,数值类型和进制整数的转换

    参考链接: 在Python中将整数int转换为字符串string 喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远! 1.数值类型的转换 int()可以将字符串 ...

  3. mysql HEX将字符串或数字转化为16进制字符串、UNHEX将16字符串转化成二进制

    目录 前言 HEX HEX 函数的参数为数字时 HEX 函数的参数为字符串时 UNHEX HEX 将 binary 类型转化为字符串 前言 mysql 5.7.31 HEX HEX 函数的官方说明如下 ...

  4. 10进制数转化为16进制数

    #include<iostream> #include<string> using namespace std; int main() {     long a;//输入的数 ...

  5. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数

    http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...

  6. 进制转化:从键盘接收一个4位的十进制数,将它转化为16进制并输出

    ;从键盘接收一个4位的十进制数,将它转化为16进制并输出 DATA SEGMENT NUM  DW 0 CRLF   DB 0AH,0DH,24H DATA ENDS STACK SEGMENT PA ...

  7. 16进制数转化为bcd码的方法

    单片机设计中经常进行数制之间的转换,int类型数据可以存放65535以下的数. 转化为bcd码用以下方法: unsigned int hexresult; //待转化的16进制数: unsigned ...

  8. 十进制转化为16进制

    有以下种方式实现,其中两种是使用系统函数,另一种是直接自己编写. main() { int u10=0; char u16[10]; int w=0,a,b,i; printf("请输入一个 ...

  9. c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...

    一个简单的问题:像这样的16进制数如何转换得到? 本帖最后由 alibaren 于 2014-11-25 01:15:15 编辑 下列3个整数(用16进制表示) 如何通过某种运算一次性得到右边的数: ...

最新文章

  1. 《预训练周刊》第11期:全球最大智能模型“悟道2.0”重磅发布、谷歌KELM:将知识图与语言模型预训练语料库集成...
  2. 扬帆起航 继续前行1 nginx+lua+template+cache
  3. 外星人计算机产品介绍,你对外星人电脑了解吗?感兴趣快看看!
  4. PMP知识点(三、范围管理)
  5. eclipse启动tomcat 访问http://localhost:8080 报404错误
  6. 2017.8.11 亚瑟王 失败总结
  7. python中的进程池:multiprocessing.Pool()
  8. HIVE大数据出现倾斜怎么办
  9. Unity 使物体朝向某个方位
  10. 第一章 MapReduce概述
  11. 逻辑删除数据库中的数据。
  12. shell遍历ip执行特定功能
  13. 删除win10 qaa输入法
  14. mmorpg服务器物理,伸缩性MMORPG服务器架构的设计与实现
  15. catagory,action,data隐式启动匹配规则
  16. Mac开不了机怎么办?
  17. eclipse 打开pom.xml文件很慢 设置pom.xml打开方式
  18. 计算广告发展历程——从CPC到oCPX
  19. 【目标跟踪】基于迭代扩展卡尔曼滤波算法实现目标滤波跟踪(IEKF)附Matlab代码
  20. Docker原理之架构篇 --- 总体架构

热门文章

  1. 去哪儿实习面经(拿到offer)
  2. 菠萝食客与菠萝刀:我们为什么应该重复造轮子
  3. 扣哒世界CodeCombat:少儿编程的“传道、授业、解惑”-环球网
  4. 哥廷根大学提出CLIPSeg,能同时作三个分割任务的模型
  5. 2022年中国医疗设备电源市场现状研究分析与发展前景预测报告
  6. The Innovation | 粪菌移植治疗肥胖,如何突破瓶颈?
  7. WordCount程序详解
  8. 造血干细胞最新进展(2021年1月版)
  9. 多亏了这些Word技巧,我才能15分钟完成所有工作!真是6到飞起
  10. SQL 实验项目8_事务控制