现获取一个随机数,并用2进制10进制和16进制,分别输出,代码跟简单,如下:
hex.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//定义全局的目的是,局部变量的生存区在其函数里,且避免返回局部变量的地址
static char Str[32] = {0};
char * print_hex(unsigned data)
{
int i;
char pp[10] = {0};
for (i=31;i>=0;i--)
{
sprintf(pp,"%c", (data&(1<<i))?'1':'0');
strcat(Str,pp);
memset(pp,0,sizeof(pp));
}
printf(Str);
printf("\n");
return (char *)Str;
}
int main (int argc, char *argv[])
{
int result;
char *str = NULL;
srand((unsigned)time(NULL));
result = rand();
printf("result: %d\n", result); //10 进制输出
printf("result: %#X\n", result); // 16 进制输出
str = print_hex(result);
printf("input:\n");
printf("%s\n",str); //二进制输出
return 0;
}