车牌编码算法 (追加下发放200分)(1分)

  • 主题发起人 主题发起人 bbscom
  • 开始时间 开始时间
B

bbscom

Unregistered / Unconfirmed
GUEST, unregistred user!
一、编码字符集有:0---9 和 A---Z 共36个字符进行编码。
二、需要实现的需求:
  1、通过数字转换为车牌编码
  2、通过编码可以转换为数字
三、追加下发放200分如:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3884014 (100分)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3918201 (50分)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3917172 (50分)
 
我想了解
此问题.
 
请您帮助呀!!!
 
function GetCarNumber( iNumber :integer):string
overload
var
i,iTemp :integer;

begin
result:= '';
for i:= 0 to 4 do
begin
iTemp := ( iNumber shr (i*6)) and 63;
result := result + char(iTemp + 48);
end;

end;
function GetCarNumber( iNumber :int64):string
overload
var
i :integer;
iTemp:int64;
begin
result:= '';
for i:= 0 to 9 do
begin
iTemp := ( iNumber shr (i*6)) and 63;
result := result + char(iTemp + 48);
end;
end;

function GetNumber(sCarNumber: string):integer;
var
i :integer;

iTemp:int64;
p :PByte;
begin
result := 0;
for i:= 1 to 5 do
begin
if(length(sCarNumber) < i) then Exit;

iTemp := byte(upCase(sCarNumber)) - 48;
iTemp := (iTemp shl ((i-1)*6 )) ;
result := result or iTemp;
end;
end;


function GetNumber64(sCarNumber: string):int64;

var
i :integer;
iTemp:int64;
begin
result := 0;
for i:= 1 to 10 do
begin
if(length(sCarNumber) < i)then Exit;
iTemp := byte(upCase(sCarNumber))- 48;
iTemp := (iTemp shl ((i-1)*6));
result := result or iTemp;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2:string;
i:integer;
i64:int64;
begin

s1 := '124AB';
i := GetNumber(s1);
s2 := GetCarNumber(i);
showmessage(s2);

s1 := 'DEFGH124AB';
i64 := GetNumber64(s1);
s2 := GetCarNumber(i64);
showmessage(s2);

end;
 

Similar threads

D
回复
0
查看
677
DelphiTeacher的专栏
D
D
回复
0
查看
843
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部