simuhunluo

思路:

  1. 下面我把相互转换的所有类型都写出来了。实际上都是通过十进制中转的,这样比较简单,写出X进制转成十进制和从十进制转成X进制的两份代码直接拷贝就完成了剩余的部分。哦,对,自己封装了一个charToDigit函数,主要是将字符转为数字用的。
  2. 十六进制转十进制转八进制:
  3. 其他同理

代码结构图

全部代码:

#include <iostream>
#include <math.h>
#include <sstream>//使用该库函数的ostringstream,将int变成string
using namespace std;

//字符转数字
int charToDigit(char c)
{
    if(c==\'A\')
        return 10;
    else if(c==\'B\')
        return 11;
    else if(c==\'C\')
        return 12;
    else if(c==\'D\')
        return 13;
    else if(c==\'E\')
        return 14;
    else if(c==\'F\')
        return 15;
    else
        return c-\'0\';
}

int jinzhi16to10(string pre)
{
    int length=pre.size();
    int result=0;
    for(int i=0; i<length; i++)
    {
        result+=((charToDigit(pre[i]))*pow(16,length-1-i));
    }
    return result;
}

int jinzhi8to10(string pre) {
    int length=pre.size();
    int result=0;
    for(int i=0; i<length; i++)
    {
        result+=((charToDigit(pre[i]))*pow(8,length-1-i));
    }
    return result;
}

int jinzhi2to10(string pre)
{
    // 在此处可以添加验证是否为二进制数字的逻辑
    int length=pre.size();
    int result=0;
    for(int i=0; i<length; i++)
    {
        result+=((charToDigit(pre[i]))*pow(2,length-1-i));
    }
    return result;
}

string jinzhi10to2(int pre) {
    ostringstream oss;
    while(pre!=0){
        oss<<pre%2;
        pre/=2;
    }
    string res=oss.str();
    oss.str("");//清空原数据流
    for(int i=0;i<res.length();i++){
        oss<<res[res.length()-i-1];
    }
    return oss.str();
}
string jinzhi10to8(int pre) {
    ostringstream oss;
    while(pre!=0){
        oss<<pre%8;
        pre/=8;
    }
    string res=oss.str();
    oss.str("");//清空原数据流
    for(int i=0;i<res.length();i++){
        oss<<res[res.length()-i-1];
    }
    return oss.str();
}
string jinzhi10to16(int pre) {
    ostringstream oss;
    while(pre!=0){
        oss<<pre%16;
        pre/=16;
    }
    string res=oss.str();
    oss.str("");//清空原数据流
    for(int i=0;i<res.length();i++){
        oss<<res[res.length()-i-1];
    }
    return oss.str();
}
int main()
{
    /**
    用于从控制台获取字符串A
       int n;
       cin>>n;
       string *A=new string[n];
       for(int i=0;i<n;i++){
           cin>>A[i];
       }*/

    cout<<jinzhi10to2(jinzhi16to10("A2"));
}



欢迎关注微信公众号“IT客“ ,投稿邮箱 itkeyy@163.com

分类:

技术点:

相关文章:

  • 2021-05-20
  • 2021-11-28
  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
  • 2022-12-23
  • 2021-07-23
猜你喜欢
  • 2021-06-03
  • 2021-06-26
  • 2022-12-23
  • 2022-02-22
  • 2021-08-17
  • 2021-12-26
相关资源
相似解决方案