将十六进制数组转换为二进制数,然后转换为十进制数

时间:2016-08-18 09:40:25

标签: arrays matlab binary hex decimal

我有一个包含两组数据的示例结构。第一个数据包含以下十六进制数组' 00 7F 3F FF 08 FF 60 26' 然后当我将其转换为二进制然后十进制时我得到一个正确的答案' 0 127 63 255 8 255 96 38'

但是,我有一些数据阵列并没有完全按照第一个排列,它们看起来像这样' 1 40 0 F 00 40 00 47' 当我尝试转换这些类型的数据集,结果是不准确的。我得到类似' 64 0 64 0 71' 的内容,而预期结果是' 1 64 0 15 0 64 0 71'

这是我的代码,包含示例数据:

InstanceID.deleteToken() or InstanceID.deleteInstanceID().

任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:0)

添加2行应该可以解决问题:

 str = regexp(Data,' ','split');
 Ind = cellfun(@length,str);
 str(Ind==1) = strcat('0',str(Ind==1) );
 Ind = cellfun(@length,str);
 str = str(Ind==2);

它所做的只是当它看到一个字符串(你的十六进制)是1个字符时,它在它前面放置一个0,所以将它校正为正确的格式。你可以在cellfun中实际做到这一点。