Ta sekvenca je u stvari broj sa bazom 27 čije su cifre [0, A..Z].
Cifre imaju sledeće vrednosti:
Code:
0 = 0
A = 1
B = 2
C = 3
...
Z = 26
U pricipu, trebaju ti dve funkcije:
1. Pretvaranje iz sekvence u INT
2. Pretvaranje iz INT-a u sekvencu
Da bi ti bilo lakše, možeš da uzmeš fiksnu dužinu sekvence, recimo 5 karaktera.
Tako dobijaš sledeće:
Code:
1 = 0000A
2 = 0000B
3 = 0000C
4 = 0000D
...
82 = 000CA
...
89 = 000CH
...
Pretvaranje iz sekvence u INT:
Code:
S0 + S1*27 + S2*27^2 + S3*27^3 + S4*27^4
Gde je S0 vrednost poslednje cifre sekvence,
S1 vrednost pretposlednje cifre sekvence, itd...
Pre nego što kreneš u konverziju, ako je sekvenca kraća od 5 karaktera,
dodaš ispred nje cifre 0:
GCN => 00GCN
F=> 0000F
Pretvaranje INT-a u sekvencu:
Code:
S0 = X % 27
X = X / 27
S1 = X % 27
X = X / 27
S2 = X % 27
X = X / 27
S3 = X % 27
X = X / 27
S4 = X % 27
Gde je X broj koji pretvaraš u sekvencu,
S0 vrednost poslednje cifre sekvence,
S1 vrednost pretposlednje cifre sekvence, itd...
Na kraju, kada si dobio sve cifre sekvence,
uradiš remove svih vodećih 0 cifara osim poslednje, npr:
0000A => A
000CH => CH
Pomoću ove dve funkcije možeš da dobiješ redni broj doc detail-a i da generišeš sledeći, ili šta ti već bude trebalo.
[Ovu poruku je menjao dusans dana 01.08.2016. u 13:10 GMT+1]