如何在不使用 eval() 的情况下编写 javascript 十六进制初始化程序?

问题描述

如果不使用 eval(),我无法弄清楚如何在 javascript 中执行以下操作,这对我来说听起来有点矫枉过正。

let sId = "12345678";
let buffer = new Uint8Array(4);
buffer[0] = eval('0x' + sId.substring(6,8) + ";");
buffer[1] = eval('0x' + sId.substring(4,6) + ";");
buffer[2] = eval('0x' + sId.substring(2,4) + ";");
buffer[3] = eval('0x' + sId.substring(0,2) + ";");

解决方法

使用 Number 构造函数代替 eval。

无论您使用 eval、Number() 还是文字,值都是相同的:

const sId = "12345678";

const testA = 0x78;
const testB = Number('0x' + sId.substring(6,8));
const testC = eval('0x' + sId.substring(6,8) + ";");

console.log(testA,testB,testC);

let sId = "12345678";
let buffer = new Uint8Array(4);
buffer[0] = Number('0x' + sId.substring(6,8));
buffer[1] = Number('0x' + sId.substring(4,6));
buffer[2] = Number('0x' + sId.substring(2,4));
buffer[3] = Number('0x' + sId.substring(0,2));

console.log(buffer);