<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    I té první máte float-aritmetiku, kdežto ta druhá varianta je jen na
    integerech.<br>
    Nebude to tím?<br>
    <br>
    PL<br>
    <br>
    ******************<br>
    <br>
    Dne 15.4.2024 v 16:40 Martin Záruba napsal(a):<br>
    <blockquote type="cite"
      cite="mid:4a1158b2-f9ca-49f1-ae82-148b96326ce3@volny.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p><font face="Arial">Je to zcela logické, ale výsledek překladu
          tomu neodpovídá, ale zjevně je chyba u mě. Potřeboval jsem
          vypsat uint16_t proměnnou </font><span style="color:
          #d35400;">JKComputedData</span><span style="color: #4e5b61;">.</span><span
          style="color: #d35400;">BatteryVoltageMillivolt</span><font
          face="Arial">, která obsahuje napětí baterie v milivoltech.
          Ale chtěl jsem, aby výpis byl ve voltech, tedy aby to napsalo:</font></p>
      <p><font face="Arial">Napětí 80.245V</font></p>
      <p><font face="Arial">zkusil jsem dvě varianty:</font></p>
      <div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #4e5b61;">        </span><span style="color: #d35400;">Serial</span><span style="color: #4e5b61;">.</span><span style="color: #d35400;">print</span><span style="color: #434f54;">(</span><span style="color: #d35400;">PSTR</span><span style="color: #434f54;">(</span><span style="color: #005c5f;">"Napětí"</span><span style="color: #434f54;">))</span><span style="color: #4e5b61;">;</span><span style="color: #d35400;">Serial</span><span style="color: #4e5b61;">.</span><span style="color: #d35400;">print</span><span style="color: #434f54;">(</span><span style="color: #d35400;">dtostrf</span><span style="color: #434f54;">(</span><span style="color: #d35400;">JKComputedData</span><span style="color: #4e5b61;">.</span><span style="color: #d35400;">BatteryVoltageMillivolt</span><span style="color: #4e5b61;">/</span><span style="color: #005c5f;">1000.0</span><span style="color: #4e5b61;">, </span><span style="color: #005c5f;">7</span><span style="color: #4e5b61;">, </span><span style="color: #005c5f;">3</span><span style="color: #4e5b61;">, sStringBuffer</span><span style="color: #434f54;">))</span><span style="color: #4e5b61;">;</span><span style="color: #d35400;">Serial</span><span style="color: #4e5b61;">.</span><span style="color: #d35400;">print</span><span style="color: #434f54;">(</span><span style="color: #005c5f;">"V, "</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">;</span></div><div><span style="color: #4e5b61;">
</span></div></div><span style="color: #4e5b61;">        </span><span style="color: #d35400;">sprintf_P</span><span style="color: #434f54;">(</span><span style="color: #4e5b61;">sStringBuffer,</span><span style="color: #d35400;">PSTR</span><span style="color: #434f54;">(</span><span style="color: #005c5f;">"Napětí%3d.%03dV, "</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">,</span><span style="color: #d35400;">JKComputedData</span><span style="color: #4e5b61;">.</span><span style="color: #d35400;">BatteryVoltageMillivolt</span><span style="color: #4e5b61;">/</span><span style="color: #005c5f;">1000</span><span style="color: #4e5b61;">,</span><span style="color: #d35400;">JKComputedData</span><span style="color: #4e5b61;">.</span><span style="color: #d35400;">BatteryVoltageMillivolt</span><span style="color: #4e5b61;">%</span><span style="color: #005c5f;">1000</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">;</span><span style="color: #d35400;">Serial</span><span style="color: #4e5b61;">.</span><span style="color: #d35400;">print</span><span style="color: #434f54;">(</span><span style="color: #4e5b61;">sStringBuffer</span><span style="color: #434f54;">)</span><span style="color: #4e5b61;">;</span><div><span style="color: #4e5b61;">
</span></div></div>
      <pre class="moz-signature" cols="72">ta první, bez sprintf je o 1372 byte delší.

Martin Záruba</pre>
      <div class="moz-cite-prefix">Dne 15.4.2024 v 14:29 Petr Labaj
        napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:037b9958-a39d-87a0-5588-fe8e5dca8bd8@volny.cz">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        Dovolím si zareagovat a trochu rozvinout poznámku pana weka o
        nevhodnosti používání *printf na jednochipech (se kterou
        souzním).<br>
        Všechny ty *printf jsou obecně dost mocné funkce, které umí
        formátovat kde co, kde jak.<br>
        Ale protože toho umí hodně, tak jsou velké.<br>
        Na nějakém PC s gigabyty paměti to moc nevadí, ale pro použití
        na MCU to (podle mě, a asi i podle pana weka) moc vhodné není.<br>
        Proto když už tam jsou jsou, tak jsou často všelijak osekané a
        některé věci neumí (třeba ty float a double, které se případně
        musí nějak extra povolit).<br>
        <br>
        Takže obecné doporučení: zvažte, jestli fakt potřebujete
        univerzální *printf.<br>
        Jestli si raději nenapíšete svou vlastní konverzi pro textový
        výstup, která bude umět jen to, co potřebujete.<br>
        Ale zase na druhé straně bude dělat přesně to, co potřebujete.<br>
        <br>
        PL<br>
        <br>
        ******************<br>
        <br>
        <div class="moz-cite-prefix">Dne 15.4.2024 v 14:06 Martin Záruba
          napsal(a):<br>
        </div>
        <blockquote type="cite"
          cite="mid:64cea9a0-0a8f-4a13-be9b-13ea26477ee2@volny.cz">
          <meta http-equiv="Content-Type" content="text/html;
            charset=UTF-8">
          <p><font face="Arial">Dík. To mě fakt nenapadlo. Nikde jsem
              nenašel, parametr l. No patří mi to.</font></p>
          <p><font face="Arial">Lze ho nějak podobně donutit i k
              formátování float? Vypisuje otazník.</font></p>
          <pre class="moz-signature" cols="72">Martin Záruba
P.S. co je špatného na printf v jednočipu?
</pre>
          <div class="moz-cite-prefix">Dne 15.4.2024 v 13:58 Jan
            Waclawek napsal(a):<br>
          </div>
          <blockquote type="cite"
            cite="mid:PC195202404151358570510c685c677@wekPC">
            <pre class="moz-quote-pre" wrap="">%lu

C99, 7.19.6.1#7 (conversion modifier l)

Conversion specifier, t.j. "zakladny typ", co je tu to "u", je v tych %xxx
vzdy posledne.

wek


PS. <flame on> Na odtazku z nadpisu mam chut odpovedat, ze "pouzivate
*printf v jednocipe"...


----- Original Message ---------------

</pre>
            <blockquote type="cite">
              <pre class="moz-quote-pre" wrap="">Prostě se to někde orizne na 16bitů. Nemá to být ul? 
Opět upozorňuji na zdravý zvyk používat snprintf... 

J. 

---------- Původní e-mail ----------
Od: Martin Záruba <a class="moz-txt-link-rfc2396E" href="mailto:swz@volny.cz" moz-do-not-send="true"><swz@volny.cz></a>
Komu: Martin Zaruba <a class="moz-txt-link-rfc2396E" href="mailto:hw-list@list.hw.cz" moz-do-not-send="true"><hw-list@list.hw.cz></a>
Datum: 15.04.2024 13:35:10
Předmět: sprintf - co dělám blbě?

"

Tento triviální kousek programu 





  char sStringBuffer[50];      

  sprintf(sStringBuffer,"%6u",(uint32_t)123456); 

  Serial.print(sStringBuffer);








vrací hodnotu 57920. Ale proč?

</pre>
            </blockquote>
          </blockquote>
        </blockquote>
        <br>
        <br>
        <fieldset class="moz-mime-attachment-header"></fieldset>
        <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz" moz-do-not-send="true">www.HW.cz</a>
<a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
      </blockquote>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>