[Javascript] 자바 스크립트에서 바이트 배열을 문자열로 변환



Answers

String.fromCharCode 바이트 배열을 apply 하기 만하면 apply . 예를 들어

String.fromCharCode.apply(null, [102, 111, 111]) 'foo'와 같습니다.

주의 사항 : 배열 65535 미만의 작품. MDN 워드 프로세서 here .

Question

바이트 배열을 문자열로 변환하려면 어떻게해야합니까?

나는 역순으로 이러한 기능을 찾았습니다 :

function string2Bin(s) {
    var b = new Array();
    var last = s.length;

    for (var i = 0; i < last; i++) {
        var d = s.charCodeAt(i);
        if (d < 128)
            b[i] = dec2Bin(d);
        else {
            var c = s.charAt(i);
            alert(c + ' is NOT an ASCII character');
            b[i] = -1;
        }
    }
    return b;
}

function dec2Bin(d) {
    var b = '';

    for (var i = 0; i < 8; i++) {
        b = (d%2) + b;
        d = Math.floor(d/2);
    }

    return b;
}

하지만 어떻게하면 함수가 다른 방식으로 작동합니까?

감사.

샤오




나는 이것이 더 효율적이라고 생각한다.

function toBinString (arr) {
    var uarr = new Uint8Array(arr.map(function(x){return parseInt(x,2)}));
    var strings = [], chunksize = 0xffff;
    // There is a maximum stack size. We cannot call String.fromCharCode with as many arguments as we want
    for (var i=0; i*chunksize < uarr.length; i++){
        strings.push(String.fromCharCode.apply(null, uarr.subarray(i*chunksize, (i+1)*chunksize)));
    }
    return strings.join('');
}



Links