<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><font face="Arial">Takže takto? Je to opravdu kratší.<br>
        <br>
      </font></p>
    <p><font face="monospace">char * Fultoa(uint32_t val,uint8_t
        length,uint8_t decimal) {<br>
          uint8_t ld1 = length - decimal - 1;<br>
          uint8_t ld2 = ld1 - 1;<br>
          char * buf = (char *)malloc(11);<br>
          uint32_t k=100;<br>
          for (uint8_t i = 3;i < length; i++) k*=10;<br>
          ultoa(val+k, buf, 10);<br>
          for (uint8_t i = 0; i < ld2; i++) {<br>
            if (buf[i + 1] == '0')<br>
              buf[i] = ' ';<br>
            else<br>
              buf[i] = buf[i + 1];<br>
          }<br>
          buf[ld2] = buf[ld1];<br>
          buf[ld1] = '.';<br>
          return buf;<br>
        }</font></p>
    <p><font face="monospace">Jen mi není jasné, zda a kdy se pole buf
        na haldě uvolní.<br>
      </font></p>
    <pre class="moz-signature" cols="72">Martin Záruba</pre>
    <div class="moz-cite-prefix">Dne 17.4.2024 v 8:08 Ladislav Vaiz
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:3e985af2-482d-48fe-9262-6cd4c4e40080@nagano.cz">On
      17.04.2024 7:44, Martin Záruba wrote:
      <br>
      <blockquote type="cite">String Fultoa(uint32_t val, uint8_t
        length, uint8_t decimal) {
        <br>
          uint8_t ld1 = length - decimal - 1;
        <br>
          uint8_t ld2 = ld1 - 1;
        <br>
          char buf[11];
        <br>
          uint32_t k=100;
        <br>
          for (uint8_t i = 3;i < length; i++) k*=10;
        <br>
          ultoa(val+k, buf, 10);
        <br>
          for (uint8_t i = 0; i < ld2; i++) {
        <br>
            if (buf[i + 1] == '0')
        <br>
              buf[i] = ' ';
        <br>
            else
        <br>
              buf[i] = buf[i + 1];
        <br>
          }
        <br>
          buf[ld2] = buf[ld1];
        <br>
          buf[ld1] = '.';
        <br>
          return buf;
        <br>
        }
        <br>
      </blockquote>
      <br>
      <br>
      V rámci testování bing chatu jsem mu zkusil zadat optimalizaci pro
      AVR. Navrhl místo Stringu vracet static char buf[11] definovaný ve
      funkci. U toho zmínil problém s vlákny (což na AVR nebude tak
      horké), k tomu navrhl řešení pomocí pole definovaného volajícím a
      předávaného funkci.
      <br>
      <br>
      To poslední mi připadne nejlepší. Vyhnete se režiji Stringu a
      buffer bude alokován, jen když ho volající bude potřebovat.
      <br>
      <br>
      L.
      <br>
      <br>
      _______________________________________________
      <br>
      HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
      <br>
      <a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
      <br>
    </blockquote>
  </body>
</html>