n = 4000; % 需要转换的数
s = [];
while(n~=0) % 得到16进制数
p = mod(n,16);
s = [p,s];
n=(n-p)/16;
end
% 得到下标s
for i = length(s):-1:2
if(s(i)==0)
s(i)=16;
s(i-1)=s(i-1)-1;
end
end
if(s(1)==0)
s(1)=[];
end
%
这个解释很详细呢!
你自己想想我有一个整数123,你知道它是一百二十三,而且是十进制的,那么你怎么分别获取个位数、百位数、千位数呢?
这就是获取10进制各个位置上的数的程序
n = 123
s = [];
while(n~=0) % 得到10进制数
p = mod(n,10);
s = [p,s];
n=(n-p)/10;
end
s
可见
s =
1 2 3
懂了吗?每次对10取余数后,作为那一位的数,然后减去余数继续除以10然后对10取余,不断这样,就先后得到3,2,1,然后构成s=[1,2,3]
对10进制这样,对16进制也是一个意思,就是把10变成16,这就是程序里的那个16的进制的意思。
然后因为16进制里面的0是要换成P(即16)的,换成P需要向前借一位,前面那个高一位的数就要减去1,就这样不断地化0为P,最后如果最高位为0,就直接舍去就行。
最后对应位置对应字母就行,1对应A,16对应P即可