Pokud to jsou jenom cisla tak jde StrToInt64 coz to zmensi na 8 bytove cislo... pokud nutne chces 10 znakovy string tak kazdy byte preved na char a to spoj + 2 prazdne znaky.
Příspěvky odeslané z IP adresy 80.251.250.–
Omlouvam se za mirnou zmatecnost prvniho vysvetleni.
To KIIV : Ano, cislo 123 v desitkove je skutecne 123, proto do desitkove nemusis z desitkove prevadet. A jak poznas kolikrat pri prevodu z obecne do 10- bud jak napsal Mircosoft umazavat, nebo jeste jednodusej- kdyz je vstup string tak vstup[0] je pocet znaku- to si uloz do promene a pak cyklus s "for...... downto 1" budes nacitat odkonce az po 1 coz je prvni znak vstupu.
To lotrman :
Urcite vis jak funguje 10kova- 5641 je 5*10E3+6*10E2+4*10E1+1*10E0 a podobne funguje i obecna- odzadu se zvetsuji mocniny obecneho cisla a ty se nasobi hodnotou v danem miste. tzn 421 v 5kove je 4*5E3+2*5E2+1*5E0. Tak pri prevodu z n do desitkove staci jit odzadu a pokazde znak vynasobit n(to je zakladni cislo te soustavy, prvni bude 1 protoze nE0 je 1), n vynasobit n (posunujes se na dalsi mocninu), pricist si to k vyslednemu cislu a toto delat tolikrat kolik ma vstup znaku(ve strungu je na 0 miste pocet znaku).tak dostanes cislo v 10kove.
Prevod z 10kove do n je mnohem slozitejsi na pochopeni- musis jit odzadu a sbirat zbytky po deleni(=MOD) nkem, ty pridavat na konec vystupu(ten ted musi byt string), a vstup delit nkem (toto je docela slozite na pochopeni) dokud neni vstup 0.
Postup co sem napsal funguje jenom pro obecne soustavy do 9, pro vetsi si musis udelat array znaku (protoze 5*D nejde) a s tema pocitat.
Tady je cast kodu prevodu z 10 do n, hlavne cast mezi repat a until. Nesnaz se to jenom skopirovat, protoze by ti to stejne neslo, je to psane v delphi,ale pro pochopeni zakladu to staci.
{doceho, x a vstup jsou celociselne, vystup1 je string}
doceho:=StrToInt(Edit3.Text);
vstup:=StrToInt(Edit1.Text);
vystup1:='';
repeat
x:=vstup mod doceho;
vystup1:=Inttostr(x)+vystup1;
vstup:=vstup div doceho;
until (vstup=0);
Edit2.Text:=vystup1;