进制转换:十进制数转十六进制数

进制转换:十进制数转十六进制数

问题描述

十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。

代码描述(一)

#include <stdio.h>
int main()
{
    int n,i,j=0;
    char a[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//*创建一个十进制与十六进制对应的数组,并对其赋值*//
    char b[32];//*存放已转换好的十六进制的数组长度未知,自定义的长度32*//
    scanf("%d",&n);
    while(n>=16)
    {
        i=n%16;
        b[j]=a[i];
        j++;//*新的数组的下标移位*/
        n=n/16;
    }//*该while循环体的作用是把n大于16的数转换十六进制数再依次输入新的数组中*//
    if(n<16)
        b[j]=a[n];
    //*注意:此时数组b[]内的十六进制数是倒过来存储的*//
    while(j>=0)
    {
        if(j>0)//*判断是不是最后一个,不是的话输出,是的话直接换行*//
            printf("%c",b[j]);
        else
            printf("%c\n",b[j]);
        j--;
    }
    return 0;
}

代码描述(二)

#include <stdio.h>
int main()
{
    int n, i, j = 0;
    char a[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
    char b[32];
    scanf("%d", &n);
    if (n ==0)
        printf("0\n");
    while (n)
    {
        i = n % 16;
        b[j] = a[i];
        ++j;
        n = n / 16;
    }
    for (i = j; i > 0; i--)
        printf("%c", b[i-1]);
    printf("\n");
    return 0;
}
发布了28 篇原创文章 · 获赞 13 · 访问量 461

猜你喜欢

转载自blog.csdn.net/yo_u_niverse/article/details/105357164