将数字数组转换为二进制数
Posted
技术标签:
【中文标题】将数字数组转换为二进制数【英文标题】:Convert array of digits to a binary number 【发布时间】:2013-11-08 20:10:54 【问题描述】:如何?例如:
a=[1 0 1 0 1 0]
我想转换成二进制数
b=101010
可以不用循环吗?
【问题讨论】:
不要使用字符串表示来做任何你想做的事情,你可能想检查bitget
、bitset
和see also
下提到的函数。我还没有看到一个案例,确实有必要使用字符串表示,但是人们一直在问这样的问题。此外,使用字符串会更慢,而且会占用更多内存。
【参考方案1】:
也许这就是你想要的:
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()
) 来实现的。
【讨论】:
为了避免依赖 ASCII 的特性,一个替代方案是bindig = '01'; bindig(a + 1)
。
如果速度是一个问题,char(a+48)
可能会更快。 (在 Octave 中快两倍)
@rayryeng 谢谢! +'0'
的事情(以及返回的 -'0'
)是我在 SO 中学到的另一件事 :-)【参考方案2】:
您可以将其转换为字符串:
sprintf('%d',a)
我认为这是逻辑数组的唯一替代方案。
【讨论】:
不错,但不是最好的选择:) @DanielR 与char
相比,这有点过头了。以上是关于将数字数组转换为二进制数的主要内容,如果未能解决你的问题,请参考以下文章
c语言编写一程序,以字符串形式输入十进制数,将字符串对应的十进制数转换成二进制数,将得到的结果输出。
将十进制数转换为二进制数----不用数组,也不用函数,只用循环