C++10进制转16进制
来源:互联网 发布:php服务器配置 编辑:程序博客网 时间:2024/06/05 11:50
方法一:
推荐 直接除以16进行计算 对结果递归进行转换运算
代码如下:
- #include<iostream>
- #include <string>
- using namespace std;
- string DecIntToHexStr(long long num)
- {
- string str;
- long long Temp = num / 16;
- int left = num % 16;
- if (Temp > 0)
- str += DecIntToHexStr(Temp);
- if (left < 10)
- str += (left + '0');
- else
- str += ('A' + left - 10);
- return str;
- }
- string DecStrToHexStr(string str)
- {
- long long Dec = 0;
- for (int i = 0; i < str.size(); ++i)
- Dec = Dec * 10 + str[i] - '0';
- return DecIntToHexStr(Dec);
- }
- int main()
- {
- string DecStr;
- while (cin >> DecStr)
- {
- cout << "0x" + DecStrToHexStr(DecStr);
- }
- return 0;
- }
方法二:先十进制转为二进制,然后再每四位进行合并转为16进制
代码如下:
- #include<iostream>
- #include <string>
- #include<vector>
- #include <sstream>
- #include <math.h>
- using namespace std;
- int main()
- {
- string decStr;
- cin >> decStr;
- int num = stoi(decStr);
- vector<int>v;
- while (num)
- {
- int bit = num % 2;
- v.push_back(bit);
- num = num / 2;
- }
- reverse(v.begin(), v.end());
- string hexStr;
- if (v.size() % 4 == 0)
- {
- for (int i = 0; i < v.size() / 4; ++i)
- {
- int temp = 0, k = 3;
- for (int j = i * 4; j < (i + 1) * 4; ++j)
- {
- if (v[j] == 1)
- temp += pow(2, k);
- --k;
- }
- if (temp <= 9)
- hexStr += temp;
- else
- hexStr += ('A' + temp - 10);
- }
- }
- else
- {
- int zeroNum = 4 - v.size() % 4;
- for (int i = 0; i < zeroNum; ++i)
- v.insert(v.begin(), 0);
- for (int i = 0; i < v.size() / 4; ++i)
- {
- int temp = 0, k = 3;
- for (int j = i * 4; j < (i + 1) * 4; ++j)
- {
- if (v[j] == 1)
- temp += pow(2, k);
- --k;
- }
- if (temp <= 9)
- {
- stringstream ss;
- string strTemp;
- ss << temp;
- ss >> strTemp;
- hexStr += strTemp;
- }
- else
- hexStr += ('A' + temp - 10);
- }
- }
- cout << hexStr << endl;
- return 0;
- }
阅读全文
0 0
- C语言 10进制转16进制
- 16进制转10进制-C语言实现
- C语言 16进制转10进制 不用强制转换
- C面试题:10进制转2进制
- OC学习之C语言递归方式实现10进制转R(2-16)进制
- (C#)10进制转2进制 数字1的个数
- 10进制转换16进制C代码实现
- C进制
- 16C
- C(10)
- c++-10
- M进制转N进制(C++)
- _objective-c 十进制转换成16进制
- c语言-大数乘法(16进制)
- C/C++ 十进制转16进制
- 16 - 10 - 30 命令行参数 ----------《c语言程序设计》
- 16 - 12 - 10 关键路径代码(C++)
- 2进制、8进制、10进制、16进制...各种进制间的轻松转换(c#)
- keras/构建卷积神经网络识别mnist
- 561. Array Partition I
- [bzoj2199][Usaco2011 Jan]奶牛议会 2-sat
- 数据类型和类型转换
- 高仿App--元贝驾考(二)Dialog工具类
- C++10进制转16进制
- Maven入门指南③:坐标和依赖
- linux通过关键字查找
- linux 和window 双系统下无法显示win引导
- 启动tomcat成功,访问项目时tomcat报错 Unresolved compilation problem
- 如何转载别人的csdn博客
- 五个小案例带你学习火热的Vue.js
- EPC编码之设备唯一标识MN
- Maven入门指南④:仓库