您的位置:首页 > 其它

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

2016-08-12 22:02 225 查看
#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;
}


测试:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: