将正数十进制转换为2~16进制数
%trdec()主要用于将十进制转换为2~16进制数
% n为输入的十进制数
% b为要转换的基数
% Example
% trdec(10.0,2) returns 1010.0000
%软件作者:dpc525
%联系EMAIL:dpc525@163.com
%完成日期:2008-6-8
%软件版本:1.0
function dec=trdec(n,b)
g = floor(n); %求得数n的整数
q=n-g; %求得数n的小数
ch1='0123456789ABCDEF'; %十六进制的16个符号
k=1;
m=1;
while g~=0 %辗转相除法求值
p(k)=rem(g,b);
g=fix(g/b);
k=k+1;
end
while m>=1 & m<=4 %求小数的代码,设定为4位
x=q*b; %小数部分乘以基数
h(m)=floor(x); %求所得乘积部分的整数
q=x-h(m); %乘积后的小数
m=m+1;
end
k=k-1;
m=m-1;
strdec1='';strdec2='';
while k>=1 %整数输出
kb1=p(k);
strdec1=strcat(strdec1,ch1(kb1+1:kb1+1));
k=k-1;
end
while m>=1 & m<=4 %小数输出
kb2=h(5-m);
strdec2=strcat(strdec2,ch1(kb2+1:kb2+1));
m=m-1;
end
dec1=strcat(strdec1,'.'); %小数和整数合并
dec=strcat(dec1,strdec2);