c - 用 printf() 进行二进制打印可以这样吗?

标签 c binary printf stm32 usart

在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/

相关文章:

c - goto 语句在 c 语言中的使用频率是多少?

python - 在 python 文件中导入带有 python 绑定(bind)的 C 文件

ios - 二进制拒绝 IOS,启动时崩溃

c - 如何解决此打印输出问题?

c - 跟踪gcc链接器链接过程

c++ - 大型 const 数组的初始化?

python - 在 Python 中保存 1 位深的二进制图像

python - 了解 CRC8 SAE J1850(正常)与 "Zero"的结果

c - 我如何在 C 中格式化输出?

c - `printf()` 如何区分浮点参数和整数类型参数?