Как реализовать такую функцию в JavaScript из Python?

array = bytes.fromhex('999') 

Может есть готовый npm пакет?


Ответы (1 шт):

Автор решения: OPTIMUS PRIME

Кажется похож:

for (let i = 0; i < 256; i++) {
  let ff = (i < 16 ? "0" : "") + i.toString(16);
  pre.append( bytes_fromhex( ff ) + "\t" + ((i + 1) % 16 ? "" : "\n"));
}

function bytes_fromhex(hex) {
  if (typeof hex != "string") {
    throw new TypeError("bytes_fromhex() argument must be string, not " + typeof hex);
  }

  if (arguments.length != 1) {
    throw new Error("bytes_fromhex() takes exactly one argument (" +  arguments.length + " given)");
  }

  hex = hex.replace(/\s/g, ""); // Игнор пробельных символов.

  if (hex.length == 0 || hex.length % 2 != 0 ) {
    throw new Error("non-hexadecimal number found in bytes_fromhex() arg at position 1");
  }

  /***/
  let str = "";

  for (let i = 0; i < hex.length; i += 2) {
    let ff = hex[i] + hex[i + 1];
    let dec = parseInt(ff, 16);

    if (isNaN(dec)) throw new Error("non-hexadecimal number found in bytes_fromhex() arg at position " + i);

    switch (true) {
      case 32 <= dec && dec <= 126:
        str += String.fromCharCode(dec);
        break;
      case dec == 9:
        str += '\\t';
        break;
      case dec == 10:
        str += '\\n';
        break;
      case dec == 13:
        str += '\\r';
        break;

      default:
        str += "\\x" + ff;
    }
  }
  
  return str;
}
<pre id="pre"></pre>

→ Ссылка