首页 新闻 搜索 专区 学院

16进制转8进制

0
悬赏园豆:10 [已解决问题] 解决于 2018-03-22 09:14
#include<stdio.h>
#include<string.h>

char a[100005];

int change(int x, int y)
{
    int temp = 0;
    
    for(int i = x; i <= y; i++)
    {
        if(a[i] > '9')
        {
            temp = temp*16 + a[i] - 'A' + 10;
        }
        else
        {
            temp = temp*16 + a[i] - '0';
        }
    }
    
    return temp;
}

int main()
{
    int n;
    
    scanf("%d", &n);
    
    while(n--)
    {
        scanf("%s", a);
    
        int len = strlen(a);
        bool flag = true;
        int num = 0;
        
        if(len % 3 == 1)                //为什么是对3取模? 
        {
            printf("%o", change(0, 0));
            flag = false;
            num = 1;
        }
        
        else if(len % 3 == 2)
        {
            printf("%o", change(0, 1));
            flag = false;
            num = 2;
        }

        for(int i = num; i < len; i = i+3)
        {
            if(flag)
            {
                flag = false;
                printf("%o", change(i, i+2));
            }
            else
                printf("%04o", change(i, i+2));        //这个地方为什么要补0? 
        }
        
        printf("\n");
    }
    
    return 0;
} 

能不能回答我代码中的两个问题?

Veritas_des_Liberty的主页 Veritas_des_Liberty | 初学一级 | 园豆:193
提问于:2018-02-01 23:43
< >
分享
最佳答案
0

可以看看我得函数,用栈实现的可以自定义进制转换(除了16进制):http://blog.csdn.net/qq_38646470/article/details/79103318  用栈写的。

收获园豆:10
龙跃十二 | 菜鸟二级 |园豆:212 | 2018-02-02 18:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册