vue/uniapp中,如何将十六进制字符串转换成有符号 2 补码中的十进制?

需要判断有没有负号,有负号拿有负号的值,没负号就拿正常的的值,

例如c4转换后为-60,格式就是像c4这样的,全是两位的

小弟在这里先感谢各位大神们,感激不尽,祝大神们发财祝大神们取漂亮老婆


回答:

都是 int8 呗?那直接位移更简洁一些:

function hex2dec_int8(hex) {

const BITS = 8;

const dec = parseInt(hex, 16);

return 0x80000000 >> (32 - BITS) | dec;

}

console.log(hex2dec_int8('c4'));

可以直接简化成:

const hex2dec_int8 = (hex) => -128 | parseInt(hex, 16);

console.log(hex2dec_int8('c4'));

应该不会有比这个更简便更高效的写法了。


回答:

其实问gpt然后调试下就好啦
function hexToDecimal(hexStr) {

// 将十六进制字符串转为整型数值

var num = parseInt(hexStr, 16);

// 如果是负数,则转换为对应的负数

if ((num & 0x80) === 0x80) {

num = -(0x100 - num);

}

return num;

}

var hexStr = 'c4';

var decimal = hexToDecimal(hexStr);

console.log(decimal); // -60


回答:

function hexc2dec(hexc) {

// 将16进制补码转换为10进制补码

const intc = parseInt(hexc, 16);

// 如果最高位为1,表示负数

if (intc & (1 << (hexc.length * 4 - 1))) {

return intc - (1 << (hexc.length * 4));

}

return intc;

}

以上是 vue/uniapp中,如何将十六进制字符串转换成有符号 2 补码中的十进制? 的全部内容, 来源链接: utcz.com/p/934898.html

回到顶部