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