Matlab 中 fscanf 和 十六进制二进制转换 的应用

现有一文件a.hex
内容为
:10000000FC1A7C1AFC1AFC1DFC1DFC1DFC17FC1EB6
:10001000FC19FC14FC8AFC1AFC1AFC1AFC16FC20C5
:10002000FC20FC1EFC1DFC1CFC1CFC1BFC1CFC1F07

我想要用MATLA读取这个文件,转化成
FC1A 7C1A FC1A FC1D FC1D FC1D
FC17 FC1E FC19 FC14 FC8A FC1A
FC1A FC1A FC16 FC20 FC20 FC1E
FC1D FC1C FC1C FC1B FC1C FC1F
这样一组数据,或者矩阵。

然后再把这些4位16进制数据转换成16位2进制的数据,忽略头2位
也就是xx11111111111111这样,最后用二进制补码转换成正的或负的十进制整数。

应该怎么做方程? 我第一步 fscanf不会用 卡住很久了

[number,cellstr]=textread('a.hex',':%8d%s'); %number为昌号后面的八位二进制,cellstr为后续的十六进制数组成的字符串细胞元
str=cell2mat(cellstr); %细胞元转为矩阵
str=reshape(str',1,numel(str)); %转为一行,你的例子给出的是6列

data=sscanf(str,'%4x');
data_new=bitand(data,hex2dec('3fff')); %忽略头2位

[dec2bin(data,16),repmat(' ',26,1),dec2bin(data_new,16)] %这一行是测试行,可删

%最后用二进制补码转换成正的或负的十进制整数,这句不是很理解
%是14位的二进制进行补码转成正的或负的十进制?
温馨提示:答案为网友推荐,仅供参考
相似回答