function MyFunction(i,k:int64): string;
function mod_num(n1, n2: int64): int64; //取余数
begin
result := n1 - n1 div n2 * n2 ;
end;
var
a:TStack<string>;
n,m:int64;
begin
a:=TStack<string>.Create();
n:=i;
while n>=k do
begin
m:= mod_num( n , k);
n:= n div k;
a.Push(IntToStr(m) );
end;
m:= mod_num( n , k);
a.Push(IntToStr(m) );
Result:='';
while a.Count>0 do
Result:=Result+'|'+a.Pop ;
a.Free;
end;
procedure TFormMain.btn45Click(Sender: TObject);
var
n,k:int64;
begin
n:=StrToInt64Def(edt9.Text,0);
k:= StrToInt64Def(edt10.Text,0);
Memo4.Lines.Add(Format('%d的%d进制=%s',[ n,k,MyFunction(n,k)]) ) ;
end;
20的2进制=|1|0|1|0|0
10的2进制=|1|0|1|0
1000000000的2进制=|1|1|1|0|1|1|1|0|0|1|1|0|1|0|1|1|0|0|1|0|1|0|0|0|0|0|0|0|0|0
10000000000的2进制=|1|0|0|1|0|1|0|1|0|0|0|0|0|0|1|0|1|1|1|1|1|0|0|1|0|0|0|0|0|0|0|0|0|0
100000000000的2进制=|1|0|1|1|1|0|1|0|0|1|0|0|0|0|1|1|1|0|1|1|0|1|1|1|0|1|0|0|0|0|0|0|0|0|0|0|0
1000000000000的2进制=|1|1|1|0|1|0|0|0|1|1|0|1|0|1|0|0|1|0|1|0|0|1|0|1|0|0|0|1|0|0|0|0|0|0|0|0|0|0|0|0
10000000000000的2进制=|1|0|0|1|0|0|0|1|1|0|0|0|0|1|0|0|1|1|1|0|0|1|1|1|0|0|1|0|1|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0
1000000000000000的2进制=|1|1|1|0|0|0|1|1|0|1|0|1|1|1|1|1|1|0|1|0|1|0|0|1|0|0|1|1|0|0|0|1|1|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
5000000000000000的32进制=|4|14|3|15|4|27|30|1|0|0|0
5000000000000000的320进制=|4|210|37|50|200|0|0
5000000000000000的311进制=|5|163|178|91|232|287|134
50000000000000的311进制=|17|57|237|86|93|20
50000000000000的4进制=|2|3|1|1|3|2|1|2|0|2|0|0|3|3|1|0|2|0|0|0|0|0|0
50000000000000的5进制=|2|3|0|2|3|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0
50000000000000的6进制=|2|5|4|2|0|1|4|0|3|3|0|1|2|1|3|2|5|2
500000000000001的6进制=|4|5|3|1|2|2|4|4|5|5|0|2|1|4|3|4|4|5|3
500000000000001的5进制=|1|0|1|1|0|1|4|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1
500000000000001的7进制=|2|1|0|2|1|3|5|4|4|0|5|3|1|0|4|6|0|4
500000000000001的70进制=|60|49|65|6|27|36|37|11