Velký int (GCC, ATMega8) - jak na integer ve velkém rozsahu?

Ahoj, potřeboval bych pomocí mcu generovat int čísla ve velkém rozsahu (v podstatě ID), co by bylo ideálěn použít? Int mi nestačí. nepotřebuji to nějak superrychle, budu potřebovat převod na string (posílám to přes sériovou linku). Posláno cca 4 x s, životnost alespoň 3 roky. S velkými čísly jsem nidky mco nedělal. Díky.

:arrow_right: administrator: přejmenováno z "Velký int (GCC, ATMega8)"

Nerozumím moc dobře.
Je typ unsigned long dost velký (0 až asi 4 miliardy) ?
Potřebuješ náhodně generovat dlouhou řadu čísel v tomto rozsahu?

Nemáš na mysli 64b int? To nadeklaruješ U64 jako unsigned, nebo S64 jako signed int.

Ano, 64b int unsigned by měl stačit - existuje pro něj nějaká funkce pro převod na string? itoa v gcc co jsem koukal (pokud jsem koukal dobře) je pouze na 32b.

V Avr-gcc taková funkce není.
Není těžké ji napsat (číslo se postupně dělí deseti).

Jiná (jednodušší) možnost je generovat náhodně přímo string.
(Jestli to bude ID, tak předpokládám, že se s tím nebudou dělat nějaké mat. operace, takže ani nemusí být ve formě čísla.)

bude to id, ale potřebuji souvislou řadu.

Tak si zvol 13-ti místnou pevnou část stringu, např “5972901673082”
a k němu přidávej např pětimístný string vytvořený z čísel 10000 - 60000.
Budeš mít souvislou řadu 50 000 unikátních 18-ti místných stringů.

no a to je právě málo:) za s potřebuji 4, tj. za 3 roky 378432000.

Tak si zvol pevnou část 9- místnou a zbytek udělej z unsigned long.
Ty 4 miliardy čísel už ti snad pár týdnů vydrží.

dík, nějak se s tím poperu, budu muset sestavit tu funkci na převod, ale to by neměl být problém.