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; }