我为MatLab编写了以下程序,它将十进制系统中的数字转换为基数为2(二进制)到16(十六进制)的其他系统。当程序从基数10开始转换为系统时,我遇到了问题。在这种情况下,必须以某种方式编写余数,例如10=A
,11=B
等等。怎么可能成功呢?我应该为此目的使用开关盒吗?谢谢!
clc
clear all
dec = input('dec=');
n = input('select number system n=');
if n>=2 && n<=16
i = 0;
p=dec;
while p>0
dec=p;
i = i + 1;
p = fix(dec/n);
r = mod(dec, n);
base(i) = num2str(r);
end
base = fliplr(base);
disp(['base=' num2str(base)]);
else
disp('error');
end
答案 0 :(得分:1)
此函数作为内置dec2base
存在。如果您通过
edit dec2base
您将看到此函数首先构建数字向量,然后使用它来索引字符数组symbols = '0123456789ABCDEFG...'
。您可以使用相同的方法而不是num2str
。 base(i) = symbols(r+1)
应该这样做。
BTW:
disp
行中,您对已经是字符串的内容使用num2str
。 disp('error')
实际生成错误消息,而不是使用error('Choose base b as 2<=b<=16')
。base(i)
您可以使用base(end+1) = ...
删除变量i
。