gpt4 book ai didi

十六进制转二进制

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:29 25 4
gpt4 key购买 nike

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) 应该打印出它们各自的二进制数。

最佳答案

我不明白为什么 for 循环是从 16 到 0。如果 int 在您的操作系统中是 16 位, 你应该将 for 循环从 15 设置为 0,否则如果 int 在你的操作系统中是 32 位的, 您应该将 for 循环从 31 设置为 0。所以代码是:

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 的精确二进制代码。

关于十六进制转二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10528367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com