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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
16进制数转化为8进制输出
问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n行,每行为输入对应的八进制正整数。   【注意】   输入的十六进制数不会有前导0,比如012A。   输出
用C语言编写一个程序将输入的十进制数转化成16进制?
你可以设置一个字符串数组 char HEX[16] = {'0', '1', '2', 3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'} 以后你得出的数字,比如余数y是10,那么HEX[y]打印出来就是A了 例子(现写的) int now; int res[100];//答案 int c = 0;//位数 输入到
C语言——十进制转为二进制、八进制、十六进制的函数转换
C语言——十进制转为二进制、八进制、十六进制的函数转换 /*** * Copyright(C) 2011, SKYCNC * All rights reserved * * 程序名称:dec_to_bin_oct_hex * 功    能:输入一个十进制数,将其转化为二进制、八进制、十六进制 * * 作    者:zhanghbboy * 完成日期:11.07.27
蓝桥杯:十六进制转八进制的高效算法
总算是在提交了11次都错误之后,第12次过了。也是无语。现在的算法,按照蓝桥杯系统给的10个测试数,显示耗时31ms,内存占用3.589MB。 问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100
C语言将十进制整数输出为八进制和十六进制
函数 char *itoa(int value, char *string, int radix)    返回值类型char    参数value 待转换的数字    参数string 转换后存储到string中    参数radix 转换到几进制 定义在 stdlib.h 代码如下: #include #include #define MAX 100 int ma
编写程序,将十进制转换为8进制并输出
#include int main() {       int n;  int i = 0;     printf ("n = ");     scanf ("%d", &n);     int a[10] = {0};           while (n)     {         a[i++] = n % 8;         n = n / 8;    
将16进制的数按字符格式存储,转换为10进制数输出-C语言
1、通过输入十六进制形式的字符转换为十进制数输出 #include #include #include int main1() { int a,b; scanf("%X%X", &a, &b);//输入两个值例如:A 8 printf("%5d%5d\n", a, b); //以十进制形式输出为 10 8 return 0; } 运行结果:
【蓝桥杯】16转换8进制
在题目锦囊中有提到,咱们可以通过2进制为媒介,达到16转8的目的。    在学习数电逻辑之后,咱们也都知道, 1位16进制可以代表4位2进制, 1位8进制可以代表3位二进制,为此我的代码大题思路就出来了,字符串存储,3位16进制求和入栈输出表示4位8进制,然后出栈输出,于是有了我最开始的代码。    #include #include #include using namespace st
蓝桥杯_16进制转8进制算法
蓝桥杯_16进制转8进制算法
C/C++语言实现十进制正整数转化为2-16进制的数并输出
“采用C/C++语言实现十进制正整数转化为2-16进制的数并输出”这一特定的算法问题的求解