如何在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
您希望数组的条目是数字而不是字符吗? 如果是,则应该可以使用以下代码:
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
这很容易,但你必须知道MATLAB在内部以ASCII格式存储字符串,并且能够使用相应的数字值进行计算。
因此,我们首先将每个字符(数字)转换为二进制展开式(长度为8),最后将所有这些单元格连接在一起,得到您想要的结果。
x = arrayfun(@(x)(dec2bin(x,8)), string, 'UniformOutput', false)
x = [x{:}]
编辑:正如Oli Charlesworth在下面提到的,可以通过以下代码实现:
reshape(dec2bin(str, 8)', 1, [])
reshape(dec2bin(str,8)', 1, [])
? - Oliver Charlesworth