Converting between strings and ArrayBuffers

后端 未结 24 1213
慢半拍i
慢半拍i 2020-11-22 04:50

Is there a commonly accepted technique for efficiently converting JavaScript strings to ArrayBuffers and vice-versa? Specifically, I\'d like to be able to write the contents

24条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-22 05:32

    Based on the answer of gengkev, I created functions for both ways, because BlobBuilder can handle String and ArrayBuffer:

    function string2ArrayBuffer(string, callback) {
        var bb = new BlobBuilder();
        bb.append(string);
        var f = new FileReader();
        f.onload = function(e) {
            callback(e.target.result);
        }
        f.readAsArrayBuffer(bb.getBlob());
    }
    

    and

    function arrayBuffer2String(buf, callback) {
        var bb = new BlobBuilder();
        bb.append(buf);
        var f = new FileReader();
        f.onload = function(e) {
            callback(e.target.result)
        }
        f.readAsText(bb.getBlob());
    }
    

    A simple test:

    string2ArrayBuffer("abc",
        function (buf) {
            var uInt8 = new Uint8Array(buf);
            console.log(uInt8); // Returns `Uint8Array { 0=97, 1=98, 2=99}`
    
            arrayBuffer2String(buf, 
                function (string) {
                    console.log(string); // returns "abc"
                }
            )
        }
    )
    

提交回复
热议问题