我有一个字符单元格和我的魔杖将其转换为十进制
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
?
答案 0 :(得分:3)
您的术语似乎有点混乱。您显示的结果是不是十进制数。它是一个十六进制数字数组(注意整个A-F
个字符)。
54 77 6F 20 4F 6E 65 20 4E 69 6E 65 20 54 77 6F
其次,调用hex2dec
当然会失败,因为输入字符串(即使没有空格)也不是十六进制(它们的值不是0-9
和A-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