简体   繁体   中英

Convert Uint8Array to Array in Javascript

I have Uint8Array instance that contains binary data of some file.
I want to send data to the server, where it will be deserialized as byte[].
But if I send Uint8Array, I have deserialization error.

So, I want to convert it to Array, as Array is deserialized well.
I do it as follows:

    function uint8ArrayToArray(uint8Array) {
        var array = [];

        for (var i = 0; i < uint8Array.byteLength; i++) {
            array[i] = uint8Array[i];
        }

        return array;
    }

This function works fine, but it is not very efficient for big files.

Question: Is there more efficient way to convert Uint8Array --> Array?

You can use the following in environments that support Array.from already (ES6)

var array = Array.from(uint8Array)

When that is not supported you can use

var array = [].slice.call(uint8Array)

There is a method of Uint8Array using the prototype (but it only supported by Firefox and Chrome):

TypedArray.prototype.entries() --> it returns a array.

Check it out: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/entries

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM