任意进制转十进制会吗,参考算法(按权值展开计算):
变量说明:
i:循环变量
m:转化后的十进制
s:R进制(字符串类型)
a:权值
a:=1;
for i:=length(s) downto 1 do
begin
if s[i] in ['0'..'9'] then m:=m+(ord(s[i])-48)*a
else m:=m+(ord(s[i])-55)*a
a:=a*r;
end;
然后再把十进制转化成二进制(除二取余倒序法):
变量说明:
i:指针
a:存放二进制的数组
i:=0;
while m<>0 do
begin
inc(i);
a[i]:=m mod 2;
m:=m div 2;
end;
注意事项:
1、如果输入的数为0,要在加一个if语句
2、输出时要倒序输出,因为方法是“除二倒序取余法”,如:
for j:=i downto 1 do write(a[i]);