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

我是读取的txt文件,文件中的数据均为DFECC001CFFEACF0等格式,将其拼为DFECC001CFFEACF0等格式的16进制数之后,转化为2进制数,并忽略其转换... 我是读取的txt文件,文件中的数据均为 DF EC C0 01 CF FE AC F0等格式,将其拼为DFEC C001 CFFE ACF0等格式的16进制数之后,转化为2进制数,并忽略其转换后的最高两位,得到14位2进制数,这14位2进制数,再根据其最高位是不是1来判断是否为补码,若为补码,则转换为是10进制负数,若最高位为0,则转换为10进制正数。 展开
 我来答
dukinkin
推荐于2016-09-11 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:955万
展开全部
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”这个帧头,然后把其后的数据进行拼接转换的话,应该怎么写呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式