const a = -100;
const b = (Math.pow(2,32) + a).toString(16)
三、16进制转成小数点
function hexStringToFloat64(hex) {
// 确保十六进制字符串是8个字符的倍数(对于64位浮点数来说是16个字符)
if (hex.length !== 16) {
throw new Error('Hex string must be 16 characters long');
}
// 创建一个8字节的ArrayBuffer
let buffer = new ArrayBuffer(8); //创建了一个8个字节二级制的缓冲区
let view = new DataView(buffer); //用于读写ArrayBuffer中的数据
// 将十六进制字符串的每两个字符转换为一个字节,并写入ArrayBuffer
for (let i = 0; i < 8; i++) {
let byteString = hex.substr((7 - i) * 2, 2);// 因为是大端字节序,注意这里的索引调整
let byteNumber = parseInt(byteString, 16);
view.setUint8(i, byteNumber);
}
// 使用getFloat64方法从DataView中获取64位浮点数
return view.getFloat64(0);
}
四、每两位10进制转为16进制
// 每两位转为16进制
export function decimalStringToHexPairs(str) {
console.log('strstr',str);
let result = '';
for (let i = 0; i <= str.length; i += 2) {
// 检查是否还有足够的字符来形成一个两位的字符串
if (i + 1 < str.length) {
result += (parseInt(str.substring(i, i + 2)).toString(16).padStart(2, '0'));
}
}
console.log('result',result);
return result;
}
五、字符串转换16进制
stringToHex(str,replaceId) {
console.log('stringstr', str);
var val = "";
for (var i = 0; i < str.length; i++) {
if (val == "")
val = str.charCodeAt(i).toString(16);
else
val += str.charCodeAt(i).toString(16);
}
return val;
},