如何将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
答案 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, [])