【C语言】十进制与n进制之间的相互转换

1.十进制转n进制

我们以十六进制为例:

利用字符串数组 对n位的字符串 第n位要乘以16的n-1次方,以此类推

#include <stdio.h>
#define N 100
int main()
{
    char a[N];
    int i = 0, re = 0;
    printf("Enter a string:");
    gets(a);
    printf("New string:");
    while (a[i])       //当读取到输入的最后一个字符之后,读取到0,跳出循环
    {
        if (a[i] >= '0' && a[i] <= '9') {
            re = re * 16 + a[i] - '0';
        }          //a[i]-'0'利用ASCII码值差值求该位的值
        else if (a[i] >= 'a' && a[i] <= 'f') {

            re = re * 16 + a[i] + 10 - 'a';
        }          //a[i]-'a'利用ASCII码值差值求该位的值
        else if (a[i] >= 'A' && a[i] <= 'F') {
            re = re * 16 + a[i] + 10 - 'A';
        }          //a[i]-'A'利用ASCII码值差值求该位的值
        i++;       //从最高位依次往低一位遍历

    }
    printf("\nnumber=%d", re);
    return 0;
}

2.n进制转化成十进制

首先我们要创建一个数组 ,存储着n进制下的字母形式(a-z/A-Z)

然后一遍遍让输入的数a  除以n,并将a%n的数字代入到一开始创建的那个数组中,求出十进制下的值(以完成转换)

char q[20] = { '0','1','2','3','4','5','6','7'};
void turn(int a)
{
    int s[10] = { 0 };
    int i = 0; int sum = 0;
    while (a != 0)
    {
        s[++i] = q[a % 8];
        a = a / 8;
    }
    for (i = i; i > 0; i--)
    {
        printf("%c", s[i]);
    }
}
int main()
{
    int a = 16;
    turn(a);
    return 0;
}

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值