博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
无符号整数可以表示比长整数更加大的数
阅读量:5743 次
发布时间:2019-06-18

本文共 1026 字,大约阅读时间需要 3 分钟。

今天做了一道蓝桥杯的练习题,我把num和h定义为一个很长的整数,当我用long定义的时候竟然也不成,经过搜索资料换了无符号整数,结果就比较令人满意喽。

/*

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
*/
 

#include<iostream>

#include<string>

using namespace std;

int main()
{
string hex;
cin >> hex;
int len = hex.length();
unsigned long num = 0;
unsigned long h = 1;
for(int i = len-1; i >= 0;i--){
int c = 0;
switch(hex[i])
{
case '0':c=hex[i]-'0';break;
case '1':c=hex[i]-'0';break;
case '2':c=hex[i]-'0';break;
case '3':c=hex[i]-'0';break;
case '4':c=hex[i]-'0';break;
case '5':c=hex[i]-'0';break;
case '6':c=hex[i]-'0';break;
case '7':c=hex[i]-'0';break;
case '8':c=hex[i]-'0';break;
case '9':c=hex[i]-'0';break;
case 'A':c=hex[i]-'A'+10;break;
case 'B':c=hex[i]-'A'+10;break;
case 'C':c=hex[i]-'A'+10;break;
case 'D':c=hex[i]-'A'+10;break;
case 'E':c=hex[i]-'A'+10;break;
case 'F':c=hex[i]-'A'+10;break;
default :break;
}
num += c * h;
h = h * 16;
}
cout << num << endl;
return 0;
}

转载于:https://www.cnblogs.com/HuangAQiu/p/6363701.html

你可能感兴趣的文章
Java-UrlRewrite中文官方文档
查看>>
C++随笔:.NET CoreCLR之corleCLR核心探索之coreconsole(2)
查看>>
js中replace的用法(两种常用举例,还有好多用法不一一列举)
查看>>
基于开源云平台OpenStack的存储分析
查看>>
关于Android Sqlite语句注意事项一点
查看>>
shell高级视频答学生while循环问题
查看>>
无法SSH到Ubuntu
查看>>
使用@media实现IE hack的方法
查看>>
磁盘管理 - 软RAID
查看>>
KVM下virtio驱动虚拟机XML配置文件分析
查看>>
创建一个基本镜像
查看>>
《11招玩转网络安全》之第一招:Docker For Docker
查看>>
7、kvm虚拟机快照备份
查看>>
visual studio 2005没有找到MSVCR80D.dll问题
查看>>
hive_0.11中文用户手册
查看>>
hiveserver2修改线程数
查看>>
sqoop笔记
查看>>
SQL Server 2012 故障转移群集最佳实践(四)
查看>>
我的友情链接
查看>>
我的友情链接
查看>>