> V bistvu bi bila dovolj tudi neka funkcija, ki vrne ven unique integer. Pa
> ce tudi je bil podan string BLA ali pa LBA...
Ce bi ti rad unique (kako se to sploh prevede ?) rezultat za vsak
string, bo ta rezultat "dolg" (= bo obsegal ravno toliko informacije)
kot original.
Z drugimi besedami, ce imas namen uporabiti vseh 8 bitov (torej nisi
omejen samo na alfanumericne stringe, tukaj bi prislo v postev
rekodiranje na 6 bitov) bi za to, da bi uspesno razloceval recimo
stringa "BLA" in "LBA" (tvoj primer, lahko bi bil uporabljen katerikoli
od 256 znakov, oz. katerikoli razen nicle ce imas null-terminated
stringe, verjetno je tako) bos porabil spet 3*8=24 bitov informacije ->
nic ne bos prihranil, isto bo, ce samo primerjas string1 in string2
namesto int1 in int2, pri cemer bi bil int1 = unique(string), unique pa
tvoja misteriozna funkcija, ki ne bi pocela nic pametnega.
Oz se drugace (pascaloiden primer, sorry), recimo, da je string1
sestavljen iz #65#66#67 ("ABC") in bi ga ti rad locil od #67#65#66
("CAB"). Domnevam, da bos uporabljal vse znake (in ne samo 'a'..'z', 'A'
.. 'Z', '0' .. '9' in se par extra znakov kot je np.r ' ', '.', ',') -->
zato, da dobis unique (edinstven ? mogoce :-)) integer , ki tvoj string
opisuje recimo 0 pristejes prvi znak (in imas trenutno 65), index
drugega znaka zamaknes za 8 bitov (66 shl 8, oz. 66 << 8) in ga
pristejes prvemu, itd, do konca. Kaj si s tem dosegel ? Nic. Se vedno
porabis 8 bitov za vsak znak iz tvojega stringa.
Moj predlog: najdi eno razumno mero tolerance, kjer si napake se
pripravljen dopuscati. Vec napak kot lahko preneses, ves informacije
lahko zavrzes. Najbolj extremen primer je preverjanje paritete, kjer
imas za "checksum" samo en bit.
Blaz Antonic