Преобразование массива из шестнадцатеричного в массив в ASCII (Javascript) - PullRequest
0 голосов
/ 18 июня 2019

Я хочу преобразовать этот массив hex в массив ASCII.

Я пытался преобразовать массив в строку, и использование функции для преобразования шестнадцатеричной строки в ASCII не соответствует моим ожиданиям.

var name = [4d,55,48,41,4d,4d,41,44,20,4e,41,5a,52,45,45,4e,20,42,49,,4e,20,5a,41,49,4e,55,44,49,4e];

name=hex2str(name);

function hex2a(hexx) {
   var hex = hexx.toString();//force conversion
   var str = '';
   for (var i = 0; (i < hex.length && hex.substr(i, 2) !== '00'); i += 2)
     str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}

  

Ожидаемый результат:

name = [M,U,H,A,M,M,A,D, ,N,A,Z,R,E,E,N, ,B,I,N, ,Z,A,I,N,U,D,I,N]

1 Ответ

3 голосов
/ 18 июня 2019

Прежде всего 4d не является допустимым гексом в javascript, вам нужно добавить префикс 0x, чтобы пометить его как гекс, затем вы можете отобразить массив и выполнить String.fromCharCode

const name = [0x4d, 0x55, 0x48, 0x41, 0x4d, 0x4d, 0x41, 0x44, 0x20, 0x4e, 0x41, 0x5a, 0x52, 0x45, 0x45, 0x4e, 0x20, 0x42, 0x49, 0x20, 0x4e, 0x20, 0x5a, 0x41, 0x49, 0x4e, 0x55, 0x44, 0x49, 0x4e];

const result = name.map(hex => String.fromCharCode(hex));

console.log(result);
...