2 fanage fanage 于 2016.01.30 20:03 提问

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

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

5个回答

caozhy
caozhy   Ds   Rxr 2016.01.30 23: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
caozhy   Ds   Rxr 2016.01.30 23:16

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

lm_whales
lm_whales   Rxr 2016.01.30 20: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;
}

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;
接近 2 年之前 回复
lm_whales
lm_whales C++都可以,和编译环境无关
接近 2 年之前 回复
fanage
fanage 请问您用的什么编译环境?
接近 2 年之前 回复
lm_whales
lm_whales <iostream > <iomanip>
接近 2 年之前 回复
lrgdongnan
lrgdongnan   2016.01.30 23:07

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

91program
91program   Ds   Rxr 2016.01.30 20:56

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

fanage
fanage 大神,什么叫直接输入数字?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!