Lyhyempi GUID

Published on Sunday, March 3, 2024

Lyhyempi GUID

GUID:ia (Globally unique identifier) käytetään nykyään yhä useammin erilaisten asioiden tunnisteena. Joskus saattaa kuitenkin olla tarve esittää tekstimuotoinen GUID lyhyemmässä tekstiformaatissa (esim. tietokanta- tai tiedonsiirtosyistä), joten alla muutama eri vaihtoehto, ja niiden toteutus C#-ohjelmointikielellä

Viivat pois

Jos lähtötilanne on f8daa3da-54f7-4859-80e2-333c0af906f4 (36 merkkiä) niin ottamalla siitä pois viivat, saadaan lopputulokseksi f8daa3da54f7485980e2333c0af906f4 (32 merkkiä). Koodin osalta sama onnistuu

Console.WriteLine(Guid.NewGuid().ToString().Replace("-", ""));

Base64-pakkaus

Tekstimuotoisen GUID:in sisältämän 128-bittisen datan voi helposti esittää Base64-formaatissa. Tällöin lopputulos voisi olla esim. jetHxulSmUSjxPZLucjdpg== (24 merkkiä)

Koodin osalta sama onnistuu

Console.WriteLine(Convert.ToBase64String(Guid.NewGuid().ToByteArray()));

Base64-pakkaus ilman yhtäsuuruusmerkkejä

Edellistä esimerkkiä parantaen voimme ottaa yhtäsuuruusmerkit pois. Tällöin lopputulos voisi olla esim. jetHxulSmUSjxPZLucjdpg (22 merkkiä)

Koodin osalta sama onnistuu

Console.WriteLine(Convert.ToBase64String(Guid.NewGuid().ToByteArray()).TrimEnd('='));

Kokonaisluvun käyttäminen

Tässä tapauksessa GUID:in tavut muutetaan BigInteger-tyyppiseksi. Tavallisten GUID:ien kanssa tämä tapa ei ole käytännöllinen tilan säästämiseksi, koska useimmissa tapauksissa saatava numero vaatii 37- tai 39-merkkiä tilaa, esim. 1182499428534725596845061500994709363, mutta jos käyttöön otetaan vaikka UUID v7 omalla epoch-ajankohdalla niin merkkejä voi hieman vähentää.

Console.WriteLine(new BigInteger(Guid.NewGuid().ToByteArray(), isUnsigned: true));

🪪