Delphi 62进制转10进制

2022-10-26 12:42:06 作者:admin

本文整理自网络,侵删。

 unit H62;
interface
uses SysUtils;
function IntToH62(N: UInt64): string; //整数转到 62 进制字符串function H62ToInt(S: string): UInt64; //62 进制字符串转到整数
implementation
function _C2B(C: char): Byte; inline;begin  Result := 0;  if C in ['0'..'9'] then Result:=Byte(C) - 48;      //0..9  if C in ['a'..'z'] then Result:=Byte(C) - 97 + 10; //a..z  if C in ['A'..'Z'] then Result:=Byte(C) - 65 + 36; //A..Zend;
function _B2C(B: Byte): char; inline;begin  Result := #0;  if B <= 9 then Result:=char(B + 48);                       //0..9  if (B >= 10) and (B <= 35) then Result:=char(B - 10 + 97); //a..z  if (B >= 36) and (B <= 61) then Result:=char(B - 36 + 65); //A..Zend;
function _Power(B,P: Cardinal): UInt64; inline;var  i: Integer;begin  Result := B;  for i := 1 to P-1 do Result := Result * B;end;
function _C2V(C: char; N: Byte): UInt64; inline;begin  Result := 0;  if (N = 0) then Result:=_C2B(C);  if (N > 0) then Result := _C2B(C) * _Power(62, N);end;
function IntToH62(N: UInt64): string;var  C: char;begin  Result := '';  repeat    C := _B2C(N mod 62);    Result := C + Result;    N := N div 62;  until (N = 0);end;
function H62ToInt(S: string): UInt64;var  C: char;  L,N,I: Cardinal;begin  Result := 0;  L := Length(S);  if L > 11 then raise Exception.Create('Err: H62ToInt'); //不能多于 11 位  for I := L downto 1 do  begin    C := S[I];    N := L - I;    Result := Result + _C2V(C, N);  end;end;
end.

相关阅读 >>

Delphi程序禁止结束进程

Delphi中如何控制webbrowser滚动条

Delphi线程池

Delphi判断字符是否是汉字

Delphi获取进程的命令行参数

Delphi取ajax网页内容

Delphi 递归算法遍历文件

Delphi 生成随机字符串

crossbow病毒开放源代码-熊猫烧香源始代码

Delphi关闭进程

更多相关阅读请进入《Delphi》频道 >>



在线咨询 拨打电话