十六进制与十进制之间的相互转换

// 8位十六进制转十进制有符号数
// 因为8位有符号数范围为-128~127,而8位十六进制数范围为0~255,所以如果转换后十进制数大于127,则说明该数为负数,负数是以补码存储的,所以负数原码为N=-[127-(x_dec-128-1)]=x_dec-256

x = 'a8';
x_dec = hex2dec(x);
if x_dec > 127
    x_dec = x_dec - 256;
end

// 十进制转十六机制
// 因为8位十六进制数范围为0~255,所以如果十进制数小于0,用正数表示为P=128+(127-(abs(x_dec)-1))=-abs(x_dec)+256

x_dec = -88
if x_dec < 0
    x_dec= x_dec+256;
end
x_hex = dec2hex(x_dec);
switch(length(x_hec))
    case 1
        result = ['0x0',x_hex];
    case 2
        result = ['0x', x_hex];
break;
end

你可能感兴趣的:(matlab,十六进制十进制互转)