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