将正数十进制转换为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);

posted on 2012-03-15 21:10  dpc525  阅读(332)  评论(0编辑  收藏  举报

导航