Protect your apps from supply chain attacksInstall
Unfortunately, sometimes the browser or someone else's API gives you a typed array like
Uint8Array to work with and you need to convert it to a
Buffer. What do you do?
But, alas, every time you do
Buffer.from(uint8array) the entire array gets copied.
Buffer constructor does a copy; this is
defined by the node docs and the 'buffer' module
matches the node API exactly.
So, how can we avoid this expensive copy in performance critical applications?
Simply use this module, of course!
If you have an
ArrayBuffer, you don't need this module, because
is already efficient.
npm install typedarray-to-buffer
To convert a typed array to a
Buffer without a copy, do this:
var toBuffer = require('typedarray-to-buffer') var arr = new Uint8Array([1, 2, 3]) arr = toBuffer(arr) // arr is a buffer now! arr.toString() // '\u0001\u0002\u0003' arr.readUInt16BE(0) // 258
If the browser supports typed arrays, then
toBuffer will augment the typed array you
pass in with the
Buffer methods and return it. See how does Buffer
work? for more about how augmentation
This module uses the typed array's underlying
ArrayBuffer to back the new
respects the "view" on the
byteLength. In other
words, if you do
toBuffer(new Uint32Array([1, 2, 3])), then the new
[1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0], not
[1, 2, 3]. And it still doesn't
require a copy.
If the browser doesn't support typed arrays, then
toBuffer will create a new
object, copy the data into it, and return it. There's no simple performance optimization
we can do for old browsers. Oh well.
If this module is used in node, then it will just call
Buffer.from. This is just for
the convenience of modules that work in both node and the browser.
MIT. Copyright (C) Feross Aboukhadijeh.
Convert a typed array to a Buffer without a copy
The npm package typedarray-to-buffer receives a total of 15,275,907 weekly downloads. As such, typedarray-to-buffer popularity was classified as popular.
We found that typedarray-to-buffer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket installs a GitHub app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.