【问题标题】:Binary vector to string二进制向量到字符串
【发布时间】:2016-02-22 02:40:16
【问题描述】:

我想将 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 岁吗?

【问题讨论】:

    标签: string matlab vector binary


    【解决方案1】:

    那是因为您还在最终结果中包含了空格。 beaker 在上面的回答中建议了使用带有num2strsprintf 的格式说明符的正确方法。但是,如果您的字符串仅包含 0/1,我可以建议的另一种方法是将 48 添加到您的所有数字,然后使用 char 进行转换:

    A = char(binary_vector + 48);
    

    01 的 ASCII 码分别是 48 和 49,所以如果你将 48 加到所有数字上,然后使用 char,你会将每个数字表示为它们的 ASCII 等价物,从而转换你的号码到0/1的字符串。

    更易读的可以是:

    A = char(binary_vector + '0');
    

    '0' 合并为等效的double 值,即 48,因为这是0 的 ASCII 码。当您向doublebinary_vector 是一个doubles 的向量)添加一些内容时,该类型将转换为其等效的double 类型。这取决于您的偏好,但由于代码打高尔夫球,我出于习惯使用第一个。

    我们得到:

    >> A
    
    A =
    
    101010101010101010101010
    

    【讨论】:

    • 我不明白为什么填充列不是记录在案的行为。
    • @excaza 老实说我也不知道。
    【解决方案2】:

    试试:

    A = num2str(binary_vector,'%d')
    or
    A = sprintf('%d',binary_vector);
    
    A = 101010101010101010101010
    

    【讨论】:

    • 太棒了!我会解释为什么 num2str 增加 2 个空格,但老实说,我不知道他们为什么这样做。
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2015-11-21
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多