可能重复:
不使用循环将二进制转换为十进制
我正在寻找最简单,最快速的解决方案.我试过文档,但可以找到任何东西.
我有一个像[0,1,1,1]这样的位数组,我想把它转换成简单的数字7.我得到这个数组有bitget(x,1:3),其中x是一个整数.
正如@Edwin和@ Azim的解决方案(更适合生产)的教学替代方案一样,试试
b = [1 0 0 1]; % or whatever
sum(b.*(2.^[length(b)-1 : -1 : 0])) % => 9 for the above
Run Code Online (Sandbox Code Playgroud)
我们创建基本元素2.^[length(b)-1 : -1 : 0] = [8 4 2 1],将每个元素乘以二进制值得到[8 0 0 1],然后求和得到最终答案.