十六进制转十进制

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


还别说,这编程真是一天不练就不行。编个进制转化都会WA好几遍,还是怪自己能力不够。



下面就顺便在程序中注释一下当时在哪里出错,不管是思路上还是代码技巧上


#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define LL long long//宏定义

using namespace std;

int main()
{

     LL ans=0;
    string a;//C++中的字符串类型
    cin>>a;
    int len=a.length();//取字符串的长度
    for(int j=len-1; j>=0; j--)
    {
        if(a[j]>='0'&&a[j]<='9')//不能漏掉0的情况
                                //在十进制转十六进制中也错过
 {
            ans+=(a[j]-'0')*pow(16,len-j-1);//求权值,完全可以用16的多少次方,
                                             //而我第一反应是用自定义函数,是麻烦了点
 }
        else if(a[j]>='A'&&a[j]<='F')
        {
            ans+=(a[j]-'A'+10)*pow(16,len-j-1);//第一个括号里面是把再大写字母转换为数字的方法
        }

    }

  cout<<ans<<endl;


    return 0;
}


其实就是这么简单,嗯,,加油吧。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值