如何将带空格的字符单元格转换为十进制数字?

时间:2016-06-03 19:04:32

标签: matlab ascii

我有一个字符单元格和我的魔杖将其转换为十进制

cellString = 

    'Tw'    'o '    'On'    'e '    'Ni'    'ne'    ' T'    'wo'

当我应用函数hex2dec时,它会出现此错误:

Input string found with characters other than 0-9, a-f, or A-F.

我知道这是因为'o '' e'' T'中的空格造成的,但我该如何解决呢?所以我会得到最后的十进制数字 54 77 6F 20 4F 6E 65 20 4E 69 6E 65 20 54 77 6F

1 个答案:

答案 0 :(得分:3)

您的术语似乎有点混乱。您显示的结果是不是十进制数。它是一个十六进制数字数组(注意整个A-F个字符)。

54 77 6F 20 4F 6E 65 20 4E 69 6E 65 20 54 77 6F

其次,调用hex2dec当然会失败,因为输入字符串(即使没有空格)也不是十六进制(它们的值不是0-9A-F)。

如果我实际查看您的输入和预期输出,那么实际想要的是输入字符串的十六进制表示。

要执行此操作,首先需要将单元格数组展平为单个字符串。然后你可以调用dec2hex,MATLAB会自动将这个字符串中的每个字符转换为它的ASCII表示(十进制数),然后转换为十六进制等效字符。

cellString = {'Tw', 'o ', 'On', 'e ', 'Ni', 'ne', ' T', 'wo'};

% Combine cell array of strings into one long string
str = cat(2, cellString{:});

% Then convert to hexadecimal
H = dec2hex(str);

%   54
%   77
%   6F
%   20
%   4F
%   6E
%   65
%   20
%   4E
%   69
%   6E
%   65
%   20
%   54
%   77
%   6F