Voila un programme de conversion d'une base B1 à une Base B2, ecrit en Pascal
program conversion;
uses wincrt;
var
n1,n2:string;
b1,b2:integer;
procedure saisie ( var b1,b2:integer; var n1:string);
var
test:boolean;
i,d,e:integer;
x:char;
begin
repeat
writeln('b1:');
readln(b1);
writeln('b2');
readln(b2);
until ( b1 in [2..16])and (b2 in[2..16]);
repeat
write('donnez n: ');
readln(n1);
i:=1;
test:=true;
if b1<=10 then
repeat
n1[i]:=upcase(n1[i]);
val(n1[i],d,e);
if e<>0 then test:=false
else
begin
if not(d in [0..b1-1] ) then
test:=false
else i:=i+1;
end;
until (test=false)or (i>length (n1))
else
repeat
n1[i]:=upcase(n1[i]);
x:=n1[i];
if x > chr(b1+55) then test:=false
else
i:=i+1;
until (test=false) or (i>length(n1));
until (test);
end;
function puiss(a,b:integer):integer;
var k,p:integer;
begin
p:=1;
for k:=1 to b do
p:= p*a;
puiss:=p;
end;
procedure convertir(n1:string;b1,b2:integer);
var n,s,d,e:integer;
res:string;
function b1_b10(n1:string):integer;
var i,j:integer;
begin
s:=0;
j:= length(n1)-1;
for i:= 1 to length(n1) do
begin
val(n1[i],d,e);
if e<>0 then d:=ord(n1[i])-55;
s:=s+ (d * puiss(b1,j));
j:=j-1;
end;
b1_b10:=s;
end;
function b10_b2(n,b2:integer):string;
var r:integer;
ch,c:string;
begin
ch:='';
repeat
r:=n mod b2;
n:= n div b2 ;
if r <10 then str(r,c)
else begin
r:=r+55;
c:=chr(r);
end;
ch:=c+ch;
until n=0;
b10_b2:=ch;
end;
begin
n:=b1_b10(n1);
res:=b10_b2(n,b2);
write('(',n1,')',b1,' = ','(',res,')',b2);
end;
begin
saisie(b1,b2,n1);
convertir(n1,b1,b2);
end.