Форматный вывод через printf
- Войдите на сайт для отправки комментариев
Пнд, 22/05/2017 - 17:02
В ардуино не смог вывести через printf() число в двоичном формате, пробовал как %b и %B . В форматах %d и %X работает.
#include <SPI.h> #include "printf.h" void setup(void) { int i; Serial.begin(115200); printf_begin(); for (i=-16;i<=16; i++) { printf(" dec i="); printf("%3d",i); printf(" bin i="); printf("%17b",i); printf(" hex i="); printf("%4X",i); printf("\n\r"); } } void loop(void){}
И попутно - почему printf() не компилируется без библиотеки SPI.H, зачем она нужна последовательному порту ?
%b вроде как разрешенный формат: http://www.softtime.ru/bookphp/gl3_6.php
остальные ответы в комментах в файле stdio.h
В ардуино не смог вывести через printf() число в двоичном формате, пробовал как %b и %B . В форматах %d и %X работает.
И не должно. См. описание AVR-LIBC.
И попутно - почему printf() не компилируется без библиотеки SPI.H, зачем она нужна последовательному порту ?
Я не знаю, что у Вас там за библиотека. Наверняка использует какую-то константу из SPI.h, но разбираться не хочу.
Возьмите нормальную реализацию и "забудьте о перхоти".
Если хотите, засуньте это в отдельный файл - будет "библиотека".
%b вроде как разрешенный формат: http://www.softtime.ru/bookphp/gl3_6.php
А причём тут php? Правильную ссылку на описание "местной" библиотеки я Вам дал выше.
Да, кстати, так никто не пишет
Это же printf, а не, прости Господи, Serial.print. Здесь пишут так:
Это же printf, а не, прости Господи, Serial.print. Здесь пишут так:
Serial.print ограничивает и отбивает у меня привычку форматного вывода
что означает static применительно к функции, а не переменной?
То, что она не видна из других файлов.
А это одновременно объявление указателя serial_stream и исполнение функции? Пока непонятная для меня конструкция.
Объявление переменной и инициализация. Точно также, как
int i = 0;
Бинарный формат вывода очень нужен, что делать ?
Самому написать через операцию сдвига и наложения маски.
Вам какие числа надо выводить? byte, int или long? Берётся буфер соответсвенно 9, 17 или 33 байта и заполняется остатками от деления на 2 справа налево. Потом как строка епчатается.
Делать так.
Троичный, четверичный и прочие шестеричные форматы так же.
Ну, если лидирующие нули не нужны, то можно и как Logic советует.