C二进制流

时间:2015-02-23 15:35:59

标签: c bit-manipulation raspberry-pi ascii

我在GPIO引脚上有一个覆盖率为1.25MBaud的覆盆子。树莓派将模仿RS485通信网络中的终端系统。所以希望这是物理层工作:)

我现在正在努力应用层。 c代码库需要Ascii,例如“Hello,world!”。我希望传递二进制流,即“111010111010001010111”,将有5814位:)所以我一直在研究如何将二进制转换为ascii但是只发现了复杂的c ++答案。有人有一个简单的解决方案吗?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

显然,您不需要将字符串分解为API为您执行的操作....

无论如何,如果你这样做了:

你" hello world中的每个字母\ n" string是以ASCII编码时的字节。 ASCII实际上只使用最低的7位。如果你想将一个字符串分成比特,我会使用以下代码作为开始。

char ch = 'h';
for (i=0; i<7; i++) {
   bool b = (ch & 1 == 1);
   ch >>= 1;
   // set the bit value b off to the pin....
   }

你需要一个循环来处理整个字符串。

答案 1 :(得分:0)

要将7位ASCII-char逐位移动到端口,可以使用:

void toPort(unsigned char x) {
  x |= 0200; // Set unused high-bit to 1
  for ( ; ; ) {
   char bit = x & 1;
   x >>= 1;
   if(x == 0) return;
   push_to_port(bit);
  } 
}