PDA

View Full Version : تبدیل مبناها



Cheetah
سه شنبه 17 آبان 1384, 15:40 عصر
با سلام!
اگه لطف کنید راهنمایی کنید خیلی ممنون میشم.
سوال: برای تبدیل اعداد در مبناهای مختلف باید چه کار کرد؟!
من: خوب فکر میکنم باید اول عدد رو به مبنای 10 ببریم و بعد خیلی راحت اون رو به مبنای مورد نظر ببریم! :بامزه:

؟ : حالا اگه بخواهیم این تبدیلات رو مستقیما انجام بدیم باید از چه الگوریتمی استفاده کنیم؟ :افسرده:

شما: ؟؟؟

SalarSoft
سه شنبه 17 آبان 1384, 18:06 عصر
Type
TBaseRange=2..32;
Const
sDigits='0123456789ABCDEFGHIJKLMNOPQRSTUV';
Function IntToAnyBase(num:int64;Base:TBaseRange):string;
var
tmp1,tmp3:int64;
str:string;
begin
str:='';
tmp3:=num;
repeat
tmp1:=tmp3 mod Base;
tmp3:=tmp3 div Base;
str:=copy(sDigits,tmp1+1,1)+str;
until not(tmp3<>0) ;
Result:=str;
end;

Function AnyBaseToInt(num:string;Base:TBaseRange):int64;
var
sum:int64;i:longint;
token:string;
begin
sum:=0;
for i:=1 to length(num) do begin
token:=uppercase(num[i]);
sum:=Base*sum+(pos(token,sDigits)-1);
end;
result:=sum;
end;

با ترکیب این دو تابع می تونی هر مبنایی رو به هر مبنای دیگه تبدیل کنی.