字符串的二进制向量
问题描述:
我想将24位的二进制向量转换为单个字符串。从这个载体'101010101010101010101010'
:字符串的二进制向量
举例来说,我应该得到的字符串[1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0]
我尝试这样做:
binary_vector = [1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0];
A = num2str(binary_vector);
l = length(A);
我获得:
A =
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
l =
70
我也不是什么明白为什么我的长度为A
是70?不应该24?
答
尝试:
A = num2str(binary_vector,'%d')
or
A = sprintf('%d',binary_vector);
A = 101010101010101010101010
答
那是因为你还包括在最终结果中的空间。烧杯在他上面的答案中提出了使用格式说明符num2str
或sprintf
的正确方法。但是,如果你的字符串只是由0/1
,另一种方法,我可以建议是增加48到所有的数字,然后用char
投:
A = char(binary_vector + 48);
为0
和1
的ASCII码是48和49分别所以如果您将所有数字都加上48,然后使用char
,那么您会将每个数字表示为它们的ASCII等效数字,从而将您的数字转换为一串0/1
。
东西更可读的可以是:
A = char(binary_vector + '0');
的'0'
被合并成其等效double
值,它是48为为0
的ASCII码。当您向double
(binary_vector
是一个doubles
的向量)添加某些内容时,类型将转换为其等效的double
类型。这取决于你的偏好,但因为代码打高尔夫,我使用了第一个习惯。
我们得到:
>> A
A =
101010101010101010101010
非常感谢,它完美。 – ImbaBalboa
太棒了!我会添加一个解释,为什么'num2str'增加2个空格,但说实话,我不知道他们为什么这样做。 – beaker