0
我试图将int转换为4位数组,以便我可以使用树莓派的GPIO输出它们。我正在用C编程。我目前的功能是:将int转换为GPIO的字节
#include <stdio.h>
char *binaryToAbits(unsigned int answer, char *result) {
if(answer>1)
{
result=binaryToAbits(answer-1,result);
}
*result='0'+(answer & 0x01);
return result+1;
};
int main(void) {
unsigned int numToConvert=2;
char ascResult[]={0,0,0,0};
int i;
*binaryToAbits(numToConvert,ascResult)='\0';
for(i=0;i<4;i++)
{
if(ascResult[i]!='1') ascResult[i]='0';
}
for(i=3;i>=0;i--)
{
printf("%c\n",ascResult[i]);
}
printf("\n");
return 0;
}
问题是数组的信号计算不正确。
我真的没有看到)在'binaryToAbits使用递归的点('。一个简单的'for()'循环会简单得多,而且速度可能要快很多。无论如何,你可以尝试修改[这个问题]的答案(https://stackoverflow.com/q/111928/1679849)。 –
您应该尝试生成一个最小,完整,可验证的示例(https://stackoverflow.com/help/mcve)。特别是你应该包括你期望的结果(也可能是你实际得到的结果)的解释。我对你的'binaryToAbits'的测试给出了合理的结果 - 但你已经指出这个函数的行为是错误的。 – skyking
你能提供一个你的输入看起来像什么样的例子,你希望你的输出看起来像什么? – Fabien