Преобразование BIN -->BCD

Кунсткамера, как обычно.

Приходит человек и хвалится, что сам на горшочек садится научился. Пацаны веселятся, что сами-то они уже парашу освоили, правда про биде не знают, но газетками мятыми пользуются уверенно!

ЗЫ: Спасибо за исправление ошибки!

Не подойдёт.

Для новичков нужно как раз самое лучшее, а не “кривоватое”, т.к. кривоватостей у них и своих достаточно.

Знаете поговорку, что “плохому танцору вечно пол кривой”? Так вот в ней нет ничего смешного. Хороший танцор и на кривом полу станцует - залюбуешься, а когда ноги неуверенно переставляешь, да ещё в добавок и пол не идеально ровный …

У меня такая фигня со сварочными электродами. Покупаю брендовые, дорогие (пол ровный) и с ними как-то, что-то получается. Знаю, что хороший сварщик любыми (пол кривой) сварит, но то ж хороший, а тут уж “какой есть” :slight_smile:

А что его так разозлило?

Если у вас есть лучший пример,пожалуста поделитесь буду благодарен.

Код на выходе резко толстеет !

Это настолько банальная операция, что мне и в голову никогда не приходило выделять её в отдельную “библиотеку”, тем более нужна не столь часто.

А так-то, могу поделиться вот этим:

Как видите, результатов значительно больше, чем 100500.

Форум для того, чтобы [новичку] можно было найти на нем правильный ответ на вопрос.
Неправильные - не нужны (см. ответ №11).

Больше половины будет вести на порно-сайты, но в сухом остатке - тоже не плохо! :smiley:

Почти такое же зло, как вывод в Serial.

  1. Уважаемый, когда ты вставляешь код в сообщение, то нужно следовать указанию. Написано на форуме - ВЕЗДЕ, даже фоном в пустом окне сообщения.
    Код обрамляется ТРЕМЯ ОБРАТНЫМИ АПОСТРОФАМИ, это символ в левом верхнем углу клавиатуры - на букве Ё.
    ВОт так: ``` на отдельных строках перед и после кода.
это правильно вставленный код

давай я покажу, как переделать твоё писание с минимальными изменениями и не меняя твоего смысла.

byte r1 = 0;
byte r10 = 0;
byte r100 = 0;
byte r1000 = 0;
byte r10000 = 0;
byte r100000 = 0;

long val = 964827;

void setup (void) {
Serial.begin (115200);
auto num = val;

r1 = num % 10;
num /= 10; 

r10 = num % 10;
num /= 10; 

r100 = num % 10;
num /= 10; 

r1000 = num % 10;
num /= 10; 

r10000 = num % 10;
num /= 10; 

r100000 = num % 10;
num /= 10; 

Serial.print (val);
Serial.print (" = ");

Serial.print (r100000);
Serial.print (r10000);
Serial.print (r1000);
Serial.print (r100);
Serial.print (r10);
Serial.print (r1);

Serial.println();
}

void loop() {
  
}

Огромное спасибо.

Для ТС разбиение числа на разряды:

Но вы не правильно понимаете формат BCD !!!

А я не понял, если честно - нафига оно надо?

Так там в моменте происходит разбивка на отдельные цифры …
unsigned long bbb=0xFFFFFFFF;

Ну… вывел бы их через пробел, чтоль… )))

Не только деление. но и Си тоже зло. Православный ассемблер наше всё. У Атмела есть хорошие примеры как это нужно делать.

+Это только кажется. Оптимизатор на раз заменяет деление сдвигом и т.п. оптимизацией.

Ассемблер только для простых проектов, либо там где он жизненно необходим. Иначе, трясина и бесполезная трата времени.

Но мозг живее работает, если пишешь на ассемблере ! (мозг программиста)

А представь, так же живо и на С++ - какой будет результат?