Как реализовать такую функцию в 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>