如何进行36进制的计算(100分)

  • 主题发起人 主题发起人 sunsetsky
  • 开始时间 开始时间
S

sunsetsky

Unregistered / Unconfirmed
GUEST, unregistred user!
如何进行36进制的计算,即0-9,A-Z共36位字母数字进行递增递减输出
 
很有创意,你要干什么呢
 
专门为36进制做一个专有类,实现加,减,乘,除不就行了?
 
做两个函数:
Ds36ToInt(ss:string):longword;
IntToDs36(sl:longword):string;
计算的时候转成整型,计算完成转回字符串
 
我做的和上面的方法相同.
 
const cDsChar:array [0..35] of char='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

function Ds36ToInt(ss:string):longword;
var sl:longword
s:byte;
begin
sl:=0;
while ss>'' do begin
sl:=sl*36;
s:=pos(ss[1],cDsChar);
inc(sl,s);
delete(ss,1,1);
end;
Result:=sl;
end;

function IntToDs36(sl:longword):string;
var ss:string

begin
ss:='';
repeat
ss:=cDsChar[sl mod 36]+ss;
sl:=sl div 36;
until sl=0;
result:=ss;
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部