整数十进制转换为二进制和十六进制

来源:互联网 发布:网络公司员工培训 编辑:程序博客网 时间:2024/04/30 01:19
#include <stdio.h>#include <stdlib.h>char* DecToBin(int num){    char* buffer = (char*)malloc(33*sizeof(char));    char* temp = buffer;    int n = 0;    for (int i = 0; i < 32; i++)    {        n = num & (1 << (31 - i));        n = n >> (31 - i);        temp[i] = (n == 0) ? '0' : '1';    }    buffer[32] = '\0';    return buffer;}char* DecToHex( int num){    char buffer[9]="";    char* result = (char*)malloc(11);    //十六进制开头    result[0] = '0';    result[1] = 'x';    char* temp = result + 2;    int i = 0;    int j = 0;    while ( i < 8 && num)    {        if (num % 16 > 9)            buffer[i++]= num % 16 - 10 + 'A';        else            buffer[i++]= num % 16 + '0';        num = num / 16;    }    //翻转    for (j = 0; j < i; j++)        temp[j] = buffer[i - j - 1];    temp[j] = '\0';    return result;}int main(){    char *p1 = nullptr;    char *p2 = nullptr;    int num = 0;    printf("输入十进制数: ");    scanf_s("%d", &num);    p1 = DecToBin(num);    p2 = DecToHex(num);    printf("二进制: %s\n", p1);    printf("十六进制: %s\n", p2);    free(p1);    free(p2);    p1 = nullptr;    p2 = nullptr;    system("pause");    return 0;}

测试:

这里写图片描述

0 0