<!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>