我试图弄清楚标题中所描述的方法。但是,有一些规则。我只能使用位级操作来确定字符是0还是1。因此,没有函数调用,宏调用,加法,减法,除法,模数或乘法。
我很可能会使用XOR和/或移位来结束。我只是不确定如何去做。我在这里发现一个问题,有人问过类似的问题,但这涉及从字符串转换为int的问题。任何帮助表示赞赏。
答案 0 :(得分:3)
char *uintToChar(uint32_t uint, char *buff)
{
char *wptr = buff;
for(uint32_t i = 1ul << 31; i ; i >>= 1)
{
*wptr++ = (uint & i) ? '1' : '0';
}
*wptr = 0;
return buff;
}
int main(void)
{
char d[33];
printf("%s\n", uintToChar(0xf0f0f0f0, d));
}