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

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

c++

5个回答

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

fanage
fanage 大神,什么叫直接输入数字?
4 年多之前 回复

#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;
}

lm_whales
lm_whales cout <<"Input Hex Format a int number"<<endl;cin>>hex>>x; cout <<"Now Output in oct Format"<<endl; cout <<oct<<x<<endl;
4 年多之前 回复
lm_whales
lm_whales C++都可以,和编译环境无关
4 年多之前 回复
fanage
fanage 请问您用的什么编译环境?
4 年多之前 回复
lm_whales
lm_whales <iostream > <iomanip>
4 年多之前 回复

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

用字符串并不麻烦:

#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;
}  

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问