Всем спасибо!
ваши ответы навели на мысли, начитался и про то что array и buffer это разные вещи, для TextDecoder нужен именно буфер. И даже у чатжпт справшивал, правда он предложил такие же правильные и не работающие вещи.
пошел другим путем - получил массив десятичных чисел из строки
i=0
for (var n = 0; n < hex.length; n += 2) {
text[i] = parseInt(hex.substr(n, 2), 16);
i +=1;
}
получил [196, 229, 230, 243, 240, 237, 251, 233], спросил чатжпт как это преобразовать в "Дежурный",
говорит напрямую не получится, а вот если бы ты имел [1044, 1077, 1078, 1091, 1088, 1085, 1099] было бы в самый раз. Сдвиг чисел равен 848
переписал свой скрипт как:
var str1 = value;
var hex = str1.toString();
if (! hex.match(/\b[0-9A-F ]{6}\b/gi)) {
return str1;
} else {
hex = hex.replace(/ /g,"");
var str = '';
for (var n = 0; n < hex.length; n += 2) { str += String.fromCharCode(parseInt(hex.substr(n, 2), 16)+848); }
return str; }
и все работает!