Re: Formátovaný tisk bylo Re: sprintf - co delam blbe?

Ladislav Vaiz spam na nagano.cz
Středa Duben 17 08:08:53 CEST 2024


On 17.04.2024 7:44, Martin Záruba wrote:
> String Fultoa(uint32_t val, uint8_t length, uint8_t decimal) {
>   uint8_t ld1 = length - decimal - 1;
>   uint8_t ld2 = ld1 - 1;
>   char buf[11];
>   uint32_t k=100;
>   for (uint8_t i = 3;i < length; i++) k*=10;
>   ultoa(val+k, buf, 10);
>   for (uint8_t i = 0; i < ld2; i++) {
>     if (buf[i + 1] == '0')
>       buf[i] = ' ';
>     else
>       buf[i] = buf[i + 1];
>   }
>   buf[ld2] = buf[ld1];
>   buf[ld1] = '.';
>   return buf;
> }


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.

To poslední mi připadne nejlepší. Vyhnete se režiji Stringu a buffer 
bude alokován, jen když ho volající bude potřebovat.

L.



Další informace o konferenci Hw-list