fanage
fanage
采纳率28.6%
2016-01-30 12:03 阅读 1.9k

C++/C输入16进制数,转换为8进制,怎么做?多谢各路大神

C++能不能用控制输入流的方法做到这个呢?多谢各路大神
之前看到用字符串做的 好麻烦 能不能用输入流的功能做?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 91program 91program 2016-01-30 12:56

    输入流?无论采用什么,只是完成一个数据的传输的过程;然后,再完成进制转换的过程。
    输入字符串,确实是麻烦一些,但很通用;可以考虑直接输入数字,无论是 10 进制、还是 16 进制,还是其它进制。

    点赞 1 评论 复制链接分享
  • lm_whales lm_whales 2016-01-30 12:56

    #include
    #include
    using namespace std;
    int mian(){
    int x;
    cout <<"Input Hex Format a int number"< cin>>hex>>x;
    cout <<"Now Output in oct Format"<<endl;
    cout <<oct<<x<<endl;
    return 0;
    }

    点赞 评论 复制链接分享
  • lrgdongnan 疯狂的指针 2016-01-30 15:07

    不管是字符串还是输入流,进制数之间的转换算法本质都是一样的

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-01-30 15:14

    用字符串并不麻烦:

    #include <iostream>
    
    int val(char * hex)
    {
        int n = 0;
        while (*hex != '\0')
        {
            if (*hex >= 'A' && *hex <= 'F')
            {
                n *= 16;
                n += *hex - 'A' + 10; 
            }
            if (*hex >= 'a' && *hex <= 'f')
            {
                n *= 16;
                n += *hex - 'a' + 10; 
            }
            if (*hex >= '0' && *hex <= '9')
            {
                n *= 16;
                n += *hex - '0'; 
            }
            hex++;
        }
        return n;
    }
    
    int main()
    {
        char input[100] = "3DC";
        int v = val(input);
        printf("%d\n", v);
        char oct[100];
        itoa(v, oct, 8);
        printf("%s\n", oct);
        return 0;
    }  
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-01-30 15:16

    因为你的输入输出是别的进制,肯定要用字符串来表示。

    点赞 评论 复制链接分享

相关推荐