如何使用matlab将16进制数转化为16位的2进制数之后忽略2进制数的最高两位,再转成带符号的十进制数呢

我是读取的txt文件,文件中的数据均为 DF EC C0 01 CF FE AC F0等格式,将其拼为DFEC C001 CFFE ACF0等格式的16进制数之后,转化为2进制数,并忽略其转换后的最高两位,得到14位2进制数,这14位2进制数,再根据其最高位是不是1来判断是否为补码,若为补码,则转换为是10进制负数,若最高位为0,则转换为10进制正数。

clear
fid=fopen('文件名','r');
a=fscanf(fid,'%s');
fclose(fid);
b=reshape(a,[4,length(a)/4])';
c=uint16(hex2dec(b));
x=dec2bin(c);
s=bitget(c,14);
c=bitset(c,15,s);
c=bitset(c,16,s);
out=zeros(size(c));
for ii=1:size(c,1);
if s(ii)
out(ii)=double(c(ii))-2^16;
else
out(ii)=double(c(ii));
end
end

out是最后的输出追问

如果还需要加上识别“AA”这个帧头,然后把其后的数据进行拼接转换的话,应该怎么写呢?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答