十六进制字符串转换为十六进制数
来源:互联网 发布:现场平面布置图软件 编辑:程序博客网 时间:2024/05/16 05:04
题目:将输入的十六进制字符串转换为十进制数。例如输入 0xabc,输出 2748。
思想:先从后向前将每位字符转换为十进制数值,再幂次求解。例如,一个十进制数 123,通过幂次分解 123 = 3*10^0 + 2*10^1 + 1*10^2;同样的道理,十六进制数 0xabc = c*16^0 + b*16^1 + c*16^2 = 2748。
代码如下:
#include <iostream>#include <string> using std::cin;using std::endl;using std::cout;using std::string; void conversion(const string &s){ if (s.length() < 2) { return; } int temp; int sum = 0; //十进制数 int exp = 1; //幂次 //从后向前处理 for (int i = s.length()-1; i != 1; --i) { //将字符转换为数字 switch(s[i]) { case '0': temp = 0; break; case '1': temp = 1; break; case '2': temp = 2; break; case '3': temp = 3; break; case '4': temp = 4; break; case '5': temp = 5; break; case '6': temp = 6; break; case '7': temp = 7; break; case '8': temp = 8; break; case '9': temp = 9; break; case 'a': case 'A': temp = 10; break; case 'b': case 'B': temp = 11; break; case 'c': case 'C': temp = 12; break; case 'd': case 'D': temp = 13; break; case 'e': case 'E': temp = 14; break; case 'f': case 'F': temp = 15; break; default: exit(-2);break; } sum += temp*exp; exp *= 16; } cout << sum << endl;} int main(){ string s; while (cin>>s) { conversion(s); } return 0;}
0 0
- 十六进制字符串转换为十六进制数
- 十六进制字符串转换为十进制数
- 将字符串转换为十六进制数
- 十六进制字符串转换为十进制数
- 字符串转换为十六进制
- 字符串转换为十六进制
- 字符串转换为十六进制
- 字符串转换为十六进制
- 十六进制字符串转换为十六进制数字
- 十进制数(字符串)转换为十六进制数
- 十六进制转换为浮点数
- 十进制???转换为十六进制数
- 字符串形式十六进制数转换
- 字符串转换为十六进制 (转)
- 十六进制字符串 转换为 整形
- 普通字符串转换为十六进制
- VC中,如何将十六进制字符串转换为十进制数?
- vc 浮点数转换为内存十六进制字符串
- 并查集模版
- status bar 、action bar、navigation bar height
- 关于Java继承的 向上转型和向下转型
- linux vim编译器修改为强大的IDE
- Hibernate中一对多和多对一关系
- 十六进制字符串转换为十六进制数
- UItableView 或者UIcollectionview,点击cell时,无反应,
- Android之ActivityManagerService浅谈
- Matlab---在多个axes之间切换
- JavaScript学习之路——分页类
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- String to Integer---8
- OC中的数组、字典和集合解析
- SDUT-3262-Circle of Friends(强连通分量)