在STM32单片机编程时,发现使用困难printf()
通过 USART 发送二进制代码数据的函数。找到可能错误的解决方案,但对我有用:
uint8_t bin = 0xAA;
printf("Converting number to binary 0b%d%d%d%d%d%d%d%d\n",bin>>7&1,bin>>6&1,bin>>5&1,bin>>4&1,bin>>3&1,bin>>2&1,bin>>1&1,bin&1);
这是我的第一篇文章,请耐心等待。
最佳答案
是的,发布的代码片段确实生成了字节 bin
的二进制表示。
但请注意,您应该更改表示方式以提高可读性:>>
和 &
之间违反直觉的优先顺序需要一些多余的括号以避免歧义。
uint8_t bin = 0xAA;
printf("Converting number to binary 0b%d%d%d%d%d%d%d%d\n",
(bin >> 7) & 1, (bin >> 6) & 1, (bin >> 5) & 1, (bin >> 4) & 1,
(bin >> 3) & 1, (bin >> 2) & 1, (bin >> 1) & 1, (bin >> 0) & 1);
关于c - 用 printf() 进行二进制打印可以这样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55068447/