JavaScript 从“byte”源读取UTF16字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 从“byte”源读取UTF16字符串相关的知识,希望对你有一定的参考价值。

function readUTF16String(bytes, bigEndian) {
    var ix = 0;
    var offset1 = 1, offset2 = 0;
    if( bytes.slice(0,2) == "\xFE\xFF") {
        bigEndian = true;
        ix = 2;
    } else if( bytes.slice(0,2) == "\xFF\xFE") {
        bigEndian = false;
        ix = 2;
    }
    
    if( bigEndian ) {
        offset1 = 0;
        offset2 = 1;
    }
    
    var string = "";
    for( ; ix < bytes.length; ix+=2 ) {
        var byte1 = bytes[ix+offset1].charCodeAt(0);
        var byte2 = bytes[ix+offset2].charCodeAt(0);
        var word1 = (byte1<<8)+byte2;
        if( byte1 < 0xD8 || byte1 >= 0xE0 ) {
            string += String.fromCharCode(word1);
        } else {
            ix+=2;
            var byte3 = bytes[ix+offset1].charCodeAt(0);
            var byte4 = bytes[ix+offset2].charCodeAt(0);
            var word2 = (byte3<<8)+byte4;
            string += String.fromCharCode(word1, word2);
        }
    }
    
    return string;
}

以上是关于JavaScript 从“byte”源读取UTF16字符串的主要内容,如果未能解决你的问题,请参考以下文章

file 从InputStream读取byte[]示例

Java从内存流中读取byte数组

如何从 HttpPostedFile InputStream 属性中读取正确的 Stream/byte[]?

如何读取图片文件,并且放在一个byte数组当中?

从 ByteBuffer 获取到 byte[] 不写入到 byte[]

JAVA:如何从 byte[] 创建 .PNG 图像?