MATLAB中的ASCII字符串到二进制向量?

时间:2011-08-07 17:56:03

标签: string matlab binary

如何将MATLAB中的字符串转换为该字符串的ASCII表示的二进制向量?

例如,我想转换

string = 'Mary had a little lamb';

看起来像:

[0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1, etc.]
\-------v------/ \-------v------/
        M                a         

2 个答案:

答案 0 :(得分:5)

您希望数组的条目是数字而不是字符吗?如果是,那么这应该有效:

s = 'Mary had a little lamb';
a = dec2bin(s,8)';
a = a(:)'-'0'

示例输出显示了它的作用:

>> s = 'Ma';          
>> a = dec2bin(s,8)'; 
>> class(a)
ans =
char
>> a = a(:)'-'0'      
a =
  Columns 1 through 13
     0     1     0     0     1     1     0     1     0     1     1     0     0
  Columns 14 through 16
     0     0     1
>> class(a)
ans =
double

答案 1 :(得分:2)

这很简单,但您必须知道MATLAB在内部以ASCII存储字符串,并且能够使用相应的数值进行计算。

因此,我们首先将每个字符(数字)转换为二进制扩展(长度为8),最后我们将所有这些单元格连接在一起,形成所需的结果。

x = arrayfun(@(x)(dec2bin(x,8)), string, 'UniformOutput', false)
x = [x{:}]

编辑:正如Oli Charlesworth在下面提到的那样,可以通过以下代码完成同样的操作:

reshape(dec2bin(str, 8)', 1, [])