【发布时间】:2011-05-08 19:40:00
【问题描述】:
我有一个包含一系列整数的向量,我想做的是获取所有数字,将它们转换为相应的二进制形式,然后将所有生成的二进制值连接在一起。有什么简单的方法吗?
例如a=[1 2 3 4] --> b=[00000001 00000010 00000011 00000100] --> c=00000001000000100000001100000100
【问题讨论】:
我有一个包含一系列整数的向量,我想做的是获取所有数字,将它们转换为相应的二进制形式,然后将所有生成的二进制值连接在一起。有什么简单的方法吗?
例如a=[1 2 3 4] --> b=[00000001 00000010 00000011 00000100] --> c=00000001000000100000001100000100
【问题讨论】:
试试:
b = dec2bin(a)
【讨论】:
正如其他答案所指出的,函数DEC2BIN 是您必须解决此问题的一种选择。但是,正如 this other SO question 所指出的,在转换大量值时,它可能是一个非常慢的选择。
为了更快的解决方案,您可以改用函数BITGET,如下所示:
a = [1 2 3 4]; %# Your array of values
nBits = 8; %# The number of bits to get for each value
nValues = numel(a); %# The number of values in a
c = zeros(1,nValues*nBits); %# Initialize c to an array of zeroes
for iBit = 1:nBits %# Loop over the bits
c(iBit:nBits:end) = bitget(a,nBits-iBit+1); %# Get the bit values
end
结果c 将是一个由0 和1 组成的数组。如果你想把它变成一个字符串,你可以使用函数CHAR,如下:
c = char(c+48);
【讨论】:
是的,使用dec2bin,后跟字符串连接。
【讨论】: