将int转换为GPIO的字节

时间:2017-07-17 11:39:06

标签: c arrays raspberry-pi int converter

我试图将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;
}

问题是阵列的信号没有正确计算。

1 个答案:

答案 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';
}