" Az összes hosszuk nem haladhatja meg a 15 számjegyet."
Pont az általad linkelt forrásban van ez:
The ITU says the maximum length should be 15, but we have found longer numbers in Germany.
Azaz hiába 15 a limit az E.164 szerint, Németországban találtak hosszabbat is már.
"Nekem nem kell szétbontanom a számot országkódra, meg körzetszámra, telefonszámra.
Az egész szám egyben kezelendő."
Akkor miért jöttél itt az országkódokkal?
Másrészt ha elegendő neked valóban egy 15 decimális számjegyű szám tárolása (és mondjuk nem kell könnyen és gyorsan decimális számjegyenként hozzáférned), akkor 7 byte-nál hatékonyabb kódolásod nem lesz. Pontosabban ha akarsz bitbűvészkedni, akkor 50 biten fog elférni egy telefonszám.
Főleg azért, mert 49 biten ugyebár a legnagyob, amit tárolhatsz, az a 562949953421311, ez meg ugye nenm elég, hiszen van csomó 562-nél nagyobb előhívóval rendelkező szám, az ausztrálok is. Így mindenképpen 50 bit kell pontosan.
A nagy kérdés tényleg az: kell tudnod gyorsan decimális számjegy szerinti keresést csinálnod ebben a táblázatban (mert akkor számjegyenként kell tárolnod, BCD például), vagy nem kell? Akkor pedig a bináris a leghatékonyabb.
Mik a pontos igényeid? A gyors módosítás/visszakeresés binárisan is működik akkor, ha minden bejegyzés ugyanannyi bitet használ, de cserébe így lesznek bitjeid, amik nem kódolnak semmit, azaz pazarolsz.
Ha a feladat, hogy egy előre beégetett listát tárolj, akkor azt még akár RLE-vel is tömörítheted, vagy egyéb hatékonyabb tömörítési sémákat is használhatsz.
Mi a tipikus felhasználás? Mert akkor ahhoz lehet mondani hatékony tárolási módot.