将文本转换为二进制文件并存储在matlab中的单个数组中

时间:2014-02-26 05:18:15

标签: matlab

我需要将给定的文本(不是文件格式)转换为二进制值,并存储在一个单独的数组中,该数组将作为Matlab中其他函数的输入。

实施例: 你好吗?

它将被转换为二进制并存储在一个数组中。我使用了dec2bin()函数,但我没有获得所需的输出。

1 个答案:

答案 0 :(得分:0)

听起来有点像技巧问题。在MATLAB中,字符数组(字符串)只是16位无符号字符代码的不同表示。

>> str = 'Hi, how are you?'
str =
Hi, how are you?
>> whos str
  Name      Size            Bytes  Class    Attributes

  str       1x16               32  char    

请注意,16个字符占用32个字节,或每个字符2个字节(16位)。来自documentation for char

  

有效代码范围为0到65535,其中代码0到127对应于7位ASCII字符。 MATLAB®可以处理的字符(7位ASCII字符除外)取决于您当前的语言环境设置。要将字符转换为数字数组,请使用double函数。

现在,您可以使用double,因为它建议将字符代码放入double数组中,但最小代表只涉及uint16

int16bStr = uint16(str)

将其拆分为字节typecast为8位整数:

typecast(int16bStr,'uint8')
如果你想看到二进制文件(但这些数组已经是二进制数据),

产生32 uint8个值(字节),适合转换为dec2bin的二进制表示。

如果您不期望除ASCII字符以外的任何内容,只需从开头删除额外的位:

>> int8bStr =
   72  105   44   32  104  111  119   32   97  114  101   32  121  111  117   63
>> binStr = reshape(dec2bin(binStr8b.'),1,[])
ans =
110011101110111001111111111111110000001001001011111011000000 <...snip...>