将整数转换为10进制、2进制、16进制的数字串

来源:互联网 发布:python多进程框架 编辑:程序博客网 时间:2024/05/16 17:49

将整数转换为10进制、2进制、16进制的数字串

//author:yangyang//main.c#include "stdafx.h"#define N 2  //可以改为8,即8进制void jinzhi_10_2_8();void jinzhi_16();int number_str = 0;//存放进制的个数int num_str[50] = {0};//存放进制数int *pnum_str = num_str;//数组指针int num = 0;//存放十进制数int jinzhi = N;int main(){    printf("输入十进制数\n");    scanf_s("%d", &num);    printf("%d的10进制为%d\n", num, num);    jinzhi_10_2_8();    jinzhi_16();    return 0;}void jinzhi_16(){    number_str = 0;//存放进制的个数    char num_str[50] = { 0 };//存放进制数    char *pnum_str = num_str;//数组指针    int yuzheng = num;//取整后的数字    for (int i = 0; i < 50; i++)//转二进制    {        int tmpchar = yuzheng % 16;//取余        yuzheng = yuzheng / 16;//取整        switch (tmpchar)//因考虑到16进制有abcdef,不采用+48的形式        {            case 0:*pnum_str = '0'; break;            case 1:*pnum_str = '1'; break;            case 2:*pnum_str = '2'; break;            case 3:*pnum_str = '3'; break;            case 4:*pnum_str = '4'; break;            case 5:*pnum_str = '5'; break;            case 6:*pnum_str = '6'; break;            case 7:*pnum_str = '7'; break;            case 8:*pnum_str = '8'; break;            case 9:*pnum_str = '9'; break;            case 10:*pnum_str = 'a'; break;            case 11:*pnum_str = 'b'; break;            case 12:*pnum_str = 'c'; break;            case 13:*pnum_str = 'd'; break;            case 14:*pnum_str = 'e'; break;            case 15:*pnum_str = 'f'; break;            default:break;        }        pnum_str++;//地址移位        number_str++;//加一位        if (yuzheng == 0)        {            break;        }    }    printf("%d的16进制为", num);    for (int i = 0; i < number_str; i++)    {        pnum_str--;    }    printf("\n");}void jinzhi_10_2_8()//二进制,八进制共用一个函数,根据需要更改N的值{    int yuzheng = num;//取整后的数字    for (int i = 0; i < 50; i++)//转二进制    {        *pnum_str = yuzheng % N;//取余        yuzheng = yuzheng / N;//取整        pnum_str++;//地址移位        number_str++;//加一位        if (yuzheng == 0)        {            break;        }    }    printf("%d的%d进制为", num, jinzhi);    for (int i = 0; i < number_str; i++)    {        pnum_str--;        printf("%d", *pnum_str);    }    printf("\n");}

当N=2时候的结果
这里写图片描述
当N=8时候的结果
这里写图片描述

0 0
原创粉丝点击