How to write a javascript hex initializer without using eval()?

Viewed 16

I can't figure out how to do the following in javascript without using eval(), which sounds a little bit overkill to me.

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) + ";");
1 Answers

Use the Number constructor instead of eval.

The values are the same whether you use eval, Number(), or a literal:

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

Related