int hex2bin (int n)
{
int i,k,mask;
for(i=16;i>=0;i--)
{
mask = 1<<i;
k = n&mask;
k==0?printf("0"):printf("1");
}
return 0;
}
これは、入力として与える任意のヘクスで機能するために必要です。意味hex2bin(0x101)
しhex2bin(0x04)
、それぞれの2進数を出力する必要があります。
forループが16から0である理由がわかりません。OSでintが16ビットの場合は、forループを15から0に設定する必要があります。そうでない場合、OSでintが32ビットの場合は、 31から0へのforループ。したがって、コードは次のとおりです。
int hex2bin (int n)
{
int i,k,mask;
for(i=sizeof(int)*8-1;i>=0;i--)
{
mask = 1<<i;
k = n&mask;
k==0?printf("0"):printf("1");
}
return 0;
}
入力(「0x10」、「0x4」など)を表示する場合は、次のような関数を宣言できます。
int hex2bin (const char *str)
{
char *p;
for(p=str+2;*p;p++)
{
int n;
if(*p>='0'&&*p<='9')
{
n=*p-'0';
}
else
{
n=*p-'a'+10;
}
int i,k,mask;
for(i=3;i>=0;i--)
{
mask=1<<i;
k=n&mask;
k==0?printf("0"):printf("1");
}
}
return 0;
}
次に、hex2bin( "0x101")を呼び出すと、0x101の正確なバイナリコードが取得されます。
私はすでにこれらのほとんどを忘れていますが、 intの代わりにunsignedを使用してみてください