请问一下这个输出结果可逆吗

请问一下,这一个JavaScript函数的输出结果可逆吗,如果有,有没有伙计可以帮我实现一下逆的过程

img

这个是输入

img

这个是输出

img

这个是js函数代码

 function ToUTF16(str) {
        var result = new Array();
        var k = 0;
        for (var i = 0; i < str.length; i++) {
            var j = str[i].charCodeAt(0);
            result[k++] = j & 0xFF;
            result[k++] = j >> 8;
        }
        return result;
    }


你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

    function ToUTF16(str) {
        var result = new Array();
        var k = 0;
        for (var i = 0; i < str.length; i++) {
            var j = str[i].charCodeAt(0);
            result[k++] = j & 0xFF;
            result[k++] = j >> 8;
        }
        return result;
    }
    var arr = ToUTF16("大家好!");
    console.log(arr);
 
    function DeToUTF16(arr) {
        var result = "";
        for (var i = 0; i < arr.length; i+=2) {
            var n = arr[i] + (arr[i+1] << 8);
            result += String.fromCharCode(n);
        }
        return result;
    }
    var str = DeToUTF16(arr);
    console.log(str);

img

这是先用str[i].charCodeAt(0)获取一个字符串的双字节字符编码。
把它分解成低位字节j & 0xFF 和高位字节 j >> 8 两个数值放到数组中,
反向解码就是每次从数组中取低位字节和高位字节两个数值,
将高位字节数值 << 8左移8个二进制位,再加上低位字节数值就还原成双字节的字符编码。
之后用String.fromCharCode(n)把双字节的字符编码转回为字符。

肯定可逆,不然后端无法获取正确内容
str[i].charCodeAt(0)相反函数为str[i].charAt(0)
&0xff只是对其最低8位的复制,这个操作可以输出j和j & 0xFF的结果对比一下
‘>>是移位运算符,,用对应的<<‘’’

遍历结束之后,return decodeURIComponent(str)

可逆,把一个字符 拆成高/低两个。 建议尝试 查看一下 javascript 的手册,理解一下每一句代码,然后有什么不理解的地方贴出大家一起讨论。