目标 将 a = [0 0 0 1 0 0 0 0] 二进制数组 变为十进制数值
新建函数 把代码复制黏贴到里面 保存
function [ y ] = bit2hex(x ,dir)
% 8位二进制数转换成 十进制数
% y为hex十进制输出,x为输入的8位二进制数组
% d7 d6 d5 d4 d3 d2 d1 d0
% dir = 1(高位是d0,低位是d7)
% = 0(高位是d7,低位是d0)
y = 0;
for i = 1:8
if( dir == 1)
y = y + x(i)*2^(i-1) ;
else
y = y + x(i)*2^(8-i);
end
end
end
保存后为这样的 名字跟函数名字要一样 不要有中文名称
a为需要变换的数组, b为十进制保存 参数dir=1时为 d0d1d2d3d4d5d6d7 ; dir=0时为我们熟悉的顺序d7d6d5d4d3d2d1d0
有时会用到截断头 或者截断尾(符号位)
function [ y ] = bit2hex(x ,dir,HeadOrEnd)
% 8位二进制数转换成 十六进制数
% y为hex十六进制输出,x为输入的8位二进制数组
% d7 d6 d5 d4 d3 d2 d1 d0
% dir = 1(高位是d0,低位是d7)
% = 0(高位是d7,低位是d0)
% HeadOrEnd=1 把第一位截断(赋值为0即可)
% =0 把最后一位截断
y = 0;
if(HeadOrEnd == 1)
x(1)=0;
else
x(8)=0;
end
for i = 1:8
if( dir == 1)
y = y + x(i)*2^(i-1) ;
else
y = y + x(i)*2^(8-i);
end
end
if(dir==0 && HeadOrEnd==0) || (dir==1 && HeadOrEnd==1)
y=y/2;
end
注意这个截高/低位之后 是会右移的(整数除以2就是右移1位)
同理低位在前