手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

无限进制转换

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

无限进制转换
(*//

标题 : 无限进制转换

说明 : 使用于数学领域进制之间相互转换

设计 :Zswang

日期 :2002-01-24

支持 :wjhu111@21cn.com

//*)


///////Begin Source

const

cScaleChar = ''''0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'''';


function IntPower(Base, Exponent: Integer): Integer; { 返回 Base 的 Exponent 次方 }

var

I: Integer;

begin

Result := 1;

for I := 1 to Exponent do

Result := Result * Base;

end; { IntPower }


function IntToDigit(mNumber: Integer; mScale: Byte;

mLength: Integer = 0): string;

{ 返回整数的进制表示 ;mScale 指定多少进制 ;mLength 指定长度 ,长度不足时向前补 0 }

var

I, J: Integer;

begin

Result := '''''''';

I := mNumber;

while (I >= mScale) and (mScale > 1) do begin

J := I mod mScale;

I := I div mScale;

Result := cScaleChar[J 1] Result;

end;

Result := cScaleChar[I 1] Result;

for I := 1 to mLength - Length(Result) do Result := ''''0'''' Result;

end; { IntToDigit }


function DigitToInt(mDigit: string; mScale: Byte): Integer;

{ 返回进制表示转换成整数 ;mScale 指定多少进制 }

var

I: Byte;

L: Integer;

begin

Result := 0;

mDigit := UpperCase(mDigit);

L := Length(mDigit);

for I := 1 to L do

Result := Result (Pos(mDigit[L - I 1], cScaleChar) - 1) *

IntPower(mScale, I - 1);

end; { DigitToInt }

///////End Source


///////Begin Demo

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit1.Text := IntToDigit(StrToIntDef(Edit2.Text, 0), 16);

end;


procedure TForm1.Button2Click(Sender: TObject);

begin

Edit2.Text := IntToStr(DigitToInt(Edit1.Text, 16));

end;

///////End Demo

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!