【问题标题】:How to write a javascript hex initializer without using eval()?如何在不使用 eval() 的情况下编写 javascript 十六进制初始化程序?
【发布时间】:2021-02-22 16:56:46
【问题描述】:

如果不使用 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) + ";");

【问题讨论】:

    标签: javascript hex data-conversion


    【解决方案1】:

    使用 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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 2013-11-11
      • 2022-06-30
      • 1970-01-01
      • 2015-01-26
      • 2014-11-13
      相关资源
      最近更新 更多