将数字数组转换为二进制数

8

如何将数字数组转换为二进制数?例如:

a=[1 0 1 0 1 0]

我想将它转换为二进制数。 b=101010 是否可以不用循环实现?

与其使用字符串表示来做任何你想做的事情,你或许想要检查一下bitgetbitset和在see also下提到的那些函数。我还没有看到过确实需要使用字符串表示的情况,尽管人们总是问这样的问题。另外,使用字符串会更慢,消耗更多内存。 - sebastian
2个回答

19

也许这正是你想要的:

char(a+'0')

例子:

>> a=[1 0 1 0 1 0]

a =

     1     0     1     0     1     0

>> char(a+'0')

ans =

101010

这通过将每个数字转换为其ASCII码(+'0'),然后将结果数字的向量转换为字符串(char())来实现。


2
为避免依赖ASCII的特殊性,另一种选择是 bindig = '01'; bindig(a + 1) - A. Donda
3
如果速度是一项关注的因素,char(a+48) 可能会更快。(在Octave中可能快两倍) - Dan
@rayryeng 谢谢!那个 +'0' 的东西(以及回来的 - '0')是我在SO上学到的另一件事情 :-) - Luis Mendo

7
您可以将其转换为字符串:
sprintf('%d',a)

我认为这是除了逻辑数组之外的唯一选择。

1
不错,但不是最好的选择 :) - Eitan T
1
@DanielR 相对于 char 来说,这有点过度了。 - Eitan T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接