10進数を文字列で表す
3434 ワード
printfを使用せずに、10進数をバイナリと16進数で出力する問題printfシリーズライブラリ関数が使用できない場合は、この10進数のバイナリと16進数の文字列をビット演算で取得し、文字列を印刷することができます.コード#コード#
#include
#include
#include
//
char *get2String(long num)
{
int i=0;
char* buffer;
char* temp;
buffer = (char*)malloc(33);
temp=buffer;//temp
for(i =0;i<32;i++)
{
temp[i] =num&(1<31-i));
temp[i] =temp[i]>>(31-i);
temp[i] =(temp[i]==0)?'0':'1';
}
buffer[32]='\0';
return buffer;
}
char *get16String(long num)
{
int i =0;
char *buffer=(char*)moalloc(11);
char *temp;
buffer[0]='0';
buffer[1]='x';
buffer[10]='\0';
temp = buffer+2;
for(i =0;i<8;i++)
{
temp[i]=(char)(num<<4 * i>>28);
temp[i]=temp[i]>=0?temp[i]:temp[i]+16;
temp[i]=temp[i]<10?temp[i]+48:temp[i]+55;
}
return buffer;
}
int main()
{
char *p = NULL;
char *q = NULL:
int num =0;
scanf("%d",&num);
p = get16String(num);
q = get2String(num);
printf("%s
",p);
printf("%s
",q);
return 0;
}