我试图将int转换为4位数组,以便我可以使用覆盆子pi的GPIO输出它们。我在C编程。我目前的职能是:
#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;
}
问题是阵列的信号没有正确计算。
答案 0 :(得分:3)
使用递归使得它比必要的更复杂。
您可以这样做:
void binaryToAbits(unsigned int input, char *result)
{
result[0] = (input & 0x1) ? '1' : '0';
result[1] = (input & 0x2) ? '1' : '0';
result[2] = (input & 0x4) ? '1' : '0';
result[3] = (input & 0x8) ? '1' : '0';
}