我创建了以下简单的matlab函数,将数字从任意基数转换为十进制数
这是第一个
function decNum = base2decimal(vec, base)
decNum = vec(1);
for d = 1:1:length(vec)-1
decNum = decNum*base + vec(d+1);
end
这是另一个
function baseNum = decimal2base(num, base, Vlen)
ii = 1;
if num == 0
baseNum = 0;
end
while num ~= 0
baseNum(ii) = mod(num, base);
num = floor(num./base);
ii = ii+1;
end
baseNum = fliplr(baseNum);
if Vlen>(length(baseNum))
baseNum = [zeros(1,(Vlen)-(length(baseNum))) baseNum ];
end
由于这些函数无法成功转换多大的数量有多大的限制,但在测试它们时我注意到以下错误
我们使用以下测试功能
num = 201;
pCount = 7
x=base2decimal(repmat(num-1, 1, pCount), num)
repmat(num-1, 1, pCount)
y=decimal2base(x, num, 1)
isequal(repmat(num-1, 1, pCount),y)
在base201中具有七(7)位数的假定向量工作正常,但是与base200相同的向量不会返回预期结果,即使它更小并且理论上应该成功转换.